using Back.Services; using Back.Validations; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Shared.DTOs; namespace Back.Controllers { [Route("api/[controller]")] [Authorize] [ApiController] public class CustomerController : ControllerBase { private readonly CheckPermission _checkPermission; private readonly servUser _servUser; private readonly servCustomer _servCus; private readonly AddCustomerValidation _addCustomerValidation; public CustomerController(CheckPermission checkPermission, servUser servUser , servCustomer servCus, AddCustomerValidation addCustomerValidation) { _addCustomerValidation = addCustomerValidation; _checkPermission = checkPermission; _servUser = servUser; _servCus = servCus; } [HttpPost("GetAll")] public async Task>> GetAll(ItemSerchGetCustomer 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.AllowSYSGetCustomer(Convert.ToInt32(UserID), user.RolUsers.First().CompanyID)) return Forbid( "شما دسترسی به خواندن اطلاعات مشتری را نداربد"); return Ok(await _servCus.GetCustomers(user.RolUsers.First().CompanyID, itemSerch)); } [HttpPost("Add")] public async Task> Add(RCustomer item) { var claim = HttpContext.User.Claims.First(c => c.Type == "UserID"); var UserID = claim.Value; var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID)); var resultValidationmodel = await _addCustomerValidation.ValidateAsync(Tuple.Create(user.RolUsers.First().CompanyID,item)); if (!resultValidationmodel.IsValid) return BadRequest(resultValidationmodel.Errors.Select(s => s.ErrorMessage).ToList()); return Ok(_servCus.AddCustomer(new Data.Models.Customer { Address = item.Address, BranchID = item.BranchID, CompanyID = user.RolUsers.First().CompanyID, CustomerType = item.CustomerType, EconomicCode = item.EconomicCode, Email = item.Email, FullName = item.FullName, Info = item.Info, MeliCode = item.MeliCode, PassportNumber = item.PassportNumber, Phone = item.Phone, ZipCode = item.ZipCode, IsDeleted = false })) ; } } }