Files
moadiran/Back/Controllers/CompanyController.cs

127 lines
5.8 KiB
C#
Raw Permalink Normal View History

2024-04-30 16:40:05 +03:30
using Back.Data.Models;
using Back.Services;
2024-04-29 07:58:41 +03:30
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
2024-04-30 16:40:05 +03:30
using Microsoft.AspNetCore.Http.HttpResults;
2024-04-29 07:58:41 +03:30
using Microsoft.AspNetCore.Mvc;
using Shared.DTOs;
2024-10-19 10:44:31 +03:30
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats;
using SixLabors.ImageSharp.Processing;
2024-04-29 07:58:41 +03:30
namespace Back.Controllers
{
[Route("api/[controller]")]
[Authorize]
[ApiController]
public class CompanyController : ControllerBase
{
private readonly servCompany _servCompany;
2024-04-29 18:15:46 +03:30
private readonly servUser _servUser;
2024-04-30 16:40:05 +03:30
private readonly servTaxPayer _servTaxPayer;
public CompanyController(servCompany servCompany, servUser servUser, servTaxPayer servTaxPayer)
2024-04-29 07:58:41 +03:30
{
2024-04-29 18:15:46 +03:30
_servUser = servUser;
2024-04-30 16:40:05 +03:30
_servCompany = servCompany;
_servTaxPayer = servTaxPayer;
2024-04-29 07:58:41 +03:30
}
2024-06-14 22:37:22 +03:30
[HttpGet("GetCompany")]
public async Task<ActionResult<CompanyDTO>> GetCompany()
{
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 _servCompany.GetCompany(user.RolUsers.First().CompanyID));
}
2024-04-29 07:58:41 +03:30
[HttpPost("ChangeLogo")]
public async Task<ActionResult<bool>> ChangeLogo(byte[] logo)
{
2024-04-29 18:15:46 +03:30
if (logo == null)
return BadRequest();
2024-11-29 18:52:58 +03:30
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
2024-04-29 18:15:46 +03:30
var UserID = claim.Value;
var result = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
var company = result?.RolUsers.First().Company;
2024-10-19 10:44:31 +03:30
//company.Logo = logo;
//----------resize
using var image = SixLabors.ImageSharp.Image.Load(logo);
//کاهش سایز تصویر
image.Mutate(x => x.Resize(200, 200));
var img = new MemoryStream();
2024-11-29 18:52:58 +03:30
image.Save(img, image.Metadata.DecodedImageFormat);
2024-10-19 10:44:31 +03:30
company.Logo = img.ToArray();
//-------------
2024-11-29 18:52:58 +03:30
2024-10-19 10:44:31 +03:30
2024-04-29 18:15:46 +03:30
return Ok(await _servCompany.AddORUpdateCompanyBoolResult(company));
}
[HttpGet("ChangeName/{name}")]
public async Task<ActionResult<bool>> ChangeName(string name)
{
2024-11-29 18:52:58 +03:30
if (string.IsNullOrEmpty(name) || name.Length <= 3)
return BadRequest(new List<string> { "نام صحیح نمی باشد" });
2024-04-29 18:15:46 +03:30
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
var UserID = claim.Value;
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
var company = user?.RolUsers.First().Company;
company.Name = name;
2024-11-29 18:52:58 +03:30
user.Fullname = name;
2024-04-29 18:15:46 +03:30
await _servUser.UpdateUser(user);
return Ok(await _servCompany.AddORUpdateCompanyBoolResult(company));
2024-04-29 07:58:41 +03:30
}
2024-04-30 16:40:05 +03:30
[HttpGet("TaxPayerInfo")]
public async Task<ActionResult<TaxPayerInfoDto>> TaxPayerInfo()
{
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
var UserID = claim.Value;
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
var company = user?.RolUsers.First().Company;
return Ok(new TaxPayerInfoDto
{
EconomicCode = company.EconomicCode,
2024-11-29 18:52:58 +03:30
PrivateKey = company.PrivateKey,
UniqeMemory = company.UniqeMemory,
BranchID = company.BranchID,
2024-04-30 16:40:05 +03:30
});
}
[HttpPut("ChangeTaxPayerInfo")]
public async Task<ActionResult<bool>> ChangeTaxPayerInfo(TaxPayerInfoDto model)
{
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
var UserID = claim.Value;
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
2024-11-29 18:52:58 +03:30
if (!string.IsNullOrEmpty(model.BranchID))
{
if (!int.TryParse(model.BranchID, out int a))
return BadRequest(new List<string> { "مقدار کد شعبه صحیح نمی باشد" });
if(model.BranchID.Length!=4)
return BadRequest(new List<string> { "مقدار کد شعبه یاید 4عددی باشد" });
}
2024-04-30 16:40:05 +03:30
2024-11-29 18:52:58 +03:30
if (!string.IsNullOrEmpty(model.UniqeMemory) && (model.UniqeMemory.Length != 6))
2024-04-30 16:40:05 +03:30
return BadRequest(new List<string> { "مقدار حافظه مالیاتی صحیح نمی باشد" });
var company = user?.RolUsers.First().Company;
if (await _servTaxPayer.ExistSuccessfulorSendorpendingInvoiceinCompanyID(company.ID) &&
(model.EconomicCode != company.EconomicCode || model.PrivateKey != company.PrivateKey || model.UniqeMemory != company.UniqeMemory))
return BadRequest(new List<string> { "به دلیل اینکه صورتحسابی با مشخصات کلیدی شما به سازمان مالیات ارسال شده امکان تغییر این موارد را ندارید" +
'\n' + "فیلدهای کلیدی شامل (کداقتصادی،شناسه حافظه مالیاتی،کلید خصوصی)" });
if (await _servTaxPayer.CheckingTheCompanyKeyInformation(company.ID, model.UniqeMemory, model.PrivateKey, model.EconomicCode))
return BadRequest(new List<string> { "فیلدهای کلیدی شامل (کداقتصادی،شناسه حافظه مالیاتی،کلید خصوصی)" + " برای شرکت دیگری ثبت شده است" });
2024-11-29 18:52:58 +03:30
2024-04-30 16:40:05 +03:30
company.EconomicCode = model.EconomicCode;
2024-11-29 18:52:58 +03:30
company.PrivateKey = model.PrivateKey;
2024-04-30 16:40:05 +03:30
company.UniqeMemory = model.UniqeMemory;
company.BranchID = model.BranchID;
return Ok(await _servCompany.AddORUpdateCompanyBoolResult(company));
}
2024-04-29 07:58:41 +03:30
}
}