2024-05-08 17:43:41 +03:30
using Back.Services ;
using Microsoft.AspNetCore.Http ;
using Microsoft.AspNetCore.Mvc ;
using Shared.DTOs.Serch ;
using Shared.DTOs ;
2024-05-08 17:48:09 +03:30
using System.Xml.Linq ;
2024-05-09 19:56:53 +03:30
using Back.Common ;
2024-05-09 23:55:22 +03:30
using Back.Validations ;
2024-05-28 15:03:08 +03:30
using Microsoft.AspNetCore.Authorization ;
2024-05-08 17:43:41 +03:30
namespace Back.Controllers
{
[Route("api/[controller] ")]
2024-05-28 15:03:08 +03:30
[Authorize]
2024-05-08 17:43:41 +03:30
[ApiController]
public class CODController : ControllerBase
{
private readonly ServCOD _servCOD ;
private readonly servUser _servUser ;
2024-05-09 23:55:22 +03:30
private readonly AddOrCodValidation _addorupdateCodValidation ;
public CODController ( ServCOD servCOD , servUser servUser , AddOrCodValidation addorupdateCodValidation )
2024-05-08 17:43:41 +03:30
{
_servCOD = servCOD ;
2024-05-09 23:55:22 +03:30
_servUser = servUser ;
_addorupdateCodValidation = addorupdateCodValidation ;
2024-05-08 17:43:41 +03:30
}
[HttpPost("GetAll")]
public async Task < ActionResult < PagingDto < RCOD > ? > > GetAll ( [ FromBody ] ItemSerchGetCOD itemSerch )
{
var claim = HttpContext . User . Claims . First ( c = > c . Type = = "UserID" ) ;
var UserID = claim . Value ;
var user = await _servUser . GetUserByUserID ( Convert . ToInt32 ( UserID ) ) ;
// if (!await _checkPermission.AllowSYSGetCOD(Convert.ToInt32(UserID), user.RolUsers.First().CompanyID)) return Forbid("شما دسترسی به خواندن اطلاعات کالا را نداربد");
return Ok ( await _servCOD . GetCODs ( user . RolUsers . First ( ) . CompanyID , itemSerch ) ) ;
2024-05-23 19:59:19 +03:30
}
2024-06-18 13:59:32 +03:30
[HttpGet("GetCod/{ID}")]
public async Task < ActionResult < RCOD > > GetCod ( int ID )
{
var claim = HttpContext . User . Claims . First ( c = > c . Type = = "UserID" ) ;
var UserID = claim . Value ;
var user = await _servUser . GetUserByUserID ( Convert . ToInt32 ( UserID ) ) ;
var cod = await _servCOD . GetCodByCodID ( ID , user . RolUsers . First ( ) . CompanyID ) ;
return Ok ( new RCOD
{
ID = cod . ID ,
TaxID = cod . ItemTaxID ,
Title = cod . Title ,
Unit = cod . CODUnit . Title ,
UnitID = cod . UnitID ,
TaxRate = cod . TaxRate
} ) ;
}
2024-05-23 19:59:19 +03:30
[HttpGet("GetAllForidName")]
public async Task < ActionResult < List < CODIdName < int > > > > GetAllForidName ( )
{
var claim = HttpContext . User . Claims . First ( c = > c . Type = = "UserID" ) ;
var UserID = claim . Value ;
var user = await _servUser . GetUserByUserID ( Convert . ToInt32 ( UserID ) ) ;
return Ok ( await _servCOD . GetCODs ( user . RolUsers . First ( ) . CompanyID ) ) ;
2024-05-08 17:48:09 +03:30
}
[HttpGet("GetUnits")]
2024-05-28 15:03:08 +03:30
[AllowAnonymous]
2024-05-09 19:56:53 +03:30
public async Task < ActionResult < List < IdName < int > > > > GetUnits ( )
2024-05-08 17:48:09 +03:30
{
return Ok ( await _servCOD . GetUnits ( ) ) ;
2024-05-08 17:43:41 +03:30
}
2024-05-09 19:56:53 +03:30
[HttpPost("Add")]
public async Task < ActionResult < bool > > Add ( RCOD item )
{
2024-05-09 23:55:22 +03:30
var claim = HttpContext . User . Claims . First ( c = > c . Type = = "UserID" ) ;
var UserID = claim . Value ;
var user = await _servUser . GetUserByUserID ( Convert . ToInt32 ( UserID ) ) ;
2024-05-09 19:56:53 +03:30
2024-05-09 23:55:22 +03:30
var resultValidationmodel = await _addorupdateCodValidation . ValidateAsync ( Tuple . Create ( user . RolUsers . First ( ) . CompanyID , item , eActionValidation . add ) ) ;
if ( ! resultValidationmodel . IsValid )
return BadRequest ( resultValidationmodel . Errors . Select ( s = > s . ErrorMessage ) . ToList ( ) ) ;
2024-05-09 19:56:53 +03:30
2024-05-09 23:55:22 +03:30
return Ok ( await _servCOD . AddOrUpdateCod ( new Data . Models . CODItem
{
CompanyID = user . RolUsers . First ( ) . CompanyID ,
TaxRate = item . TaxRate ,
Title = item . Title ,
UnitID = item . UnitID ,
ItemTaxID = item . TaxID ,
IsDeleted = false
} ) ) ;
2024-05-09 19:56:53 +03:30
}
[HttpPut("Update")]
public async Task < ActionResult < bool > > Update ( RCOD item )
{
2024-05-09 23:55:22 +03:30
//-----GetUserAndCompany
var claim = HttpContext . User . Claims . First ( c = > c . Type = = "UserID" ) ;
var UserID = claim . Value ;
var user = await _servUser . GetUserByUserID ( Convert . ToInt32 ( UserID ) ) ;
2024-05-09 19:56:53 +03:30
2024-05-09 23:55:22 +03:30
//-----Validaton
var resultValidationmodel = await _addorupdateCodValidation . ValidateAsync ( Tuple . Create ( user . RolUsers . First ( ) . CompanyID , item , eActionValidation . update ) ) ;
if ( ! resultValidationmodel . IsValid )
return BadRequest ( resultValidationmodel . Errors . Select ( s = > s . ErrorMessage ) . ToList ( ) ) ;
2024-05-09 19:56:53 +03:30
2024-05-09 23:55:22 +03:30
//-----Get Cod
var Cod = await _servCOD . GetCodByCodID ( item . ID . Value , user . RolUsers . First ( ) . CompanyID ) ;
if ( Cod = = null )
return BadRequest ( new List < string > { "Cod notFound..." } ) ;
2024-05-09 19:56:53 +03:30
2024-05-09 23:55:22 +03:30
////-----change Cod
Cod . TaxRate = item . TaxRate ;
2024-06-27 19:18:50 +03:30
if ( ! await _servCOD . UsedInTheInvoice ( Cod . ID ) )
Cod . Title = item . Title ;
2024-05-09 23:55:22 +03:30
Cod . UnitID = item . UnitID ;
Cod . ItemTaxID = item . TaxID ;
Cod . IsDeleted = false ;
2024-05-09 19:56:53 +03:30
2024-05-09 23:55:22 +03:30
//----Update and sendResult
return Ok ( await _servCOD . AddOrUpdateCod ( Cod ) ) ;
2024-05-09 19:56:53 +03:30
}
[HttpDelete("Delete/{ID}")]
public async Task < ActionResult < bool > > Delete ( int ID )
{
2024-05-09 23:55:22 +03:30
//-----GetUserAndCompany
var claim = HttpContext . User . Claims . First ( c = > c . Type = = "UserID" ) ;
var UserID = claim . Value ;
var user = await _servUser . GetUserByUserID ( Convert . ToInt32 ( UserID ) ) ;
2024-05-09 19:56:53 +03:30
2024-05-09 23:55:22 +03:30
//-----Get Cus
var cod = await _servCOD . GetCodByCodID ( ID , user . RolUsers . First ( ) . CompanyID ) ;
if ( cod = = null )
return NotFound ( ) ;
2024-05-09 19:56:53 +03:30
2024-05-09 23:55:22 +03:30
//----Update and sendResult
return Ok ( await _servCOD . DeleteCod ( cod ) ) ;
2024-05-09 19:56:53 +03:30
}
2024-06-27 19:18:50 +03:30
[HttpGet("UsedInTheInvoice/{ID}")]
public async Task < ActionResult < bool > > UsedInTheInvoice ( int ID )
{
return Ok ( await _servCOD . UsedInTheInvoice ( ID ) ) ;
}
2024-05-08 17:43:41 +03:30
}
}