From 827aa368607815c6dfcbd118bfc8744ddf2f91e6 Mon Sep 17 00:00:00 2001 From: mmrbnjd Date: Tue, 30 Apr 2024 16:40:05 +0330 Subject: [PATCH] setting --- Back/Controllers/CompanyController.cs | 57 +++++++- Back/Program.cs | 1 + Back/Services/servTaxPayer.cs | 27 ++++ Shared/DTOs/TaxPayerInfoDto.cs | 16 +++ TaxPayerFull/Layout/PanelNavMenu.razor | 6 +- TaxPayerFull/Pages/UserPanel/Setting.razor | 134 ++++++++++++++++++ TaxPayerFull/Program.cs | 18 ++- TaxPayerFull/Services/HttpClientController.cs | 7 + 8 files changed, 258 insertions(+), 8 deletions(-) create mode 100644 Back/Services/servTaxPayer.cs create mode 100644 Shared/DTOs/TaxPayerInfoDto.cs create mode 100644 TaxPayerFull/Pages/UserPanel/Setting.razor diff --git a/Back/Controllers/CompanyController.cs b/Back/Controllers/CompanyController.cs index f2f583d..cb35722 100644 --- a/Back/Controllers/CompanyController.cs +++ b/Back/Controllers/CompanyController.cs @@ -1,6 +1,8 @@ -using Back.Services; +using Back.Data.Models; +using Back.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.HttpResults; using Microsoft.AspNetCore.Mvc; using Shared.DTOs; @@ -13,17 +15,20 @@ namespace Back.Controllers { private readonly servCompany _servCompany; private readonly servUser _servUser; - public CompanyController(servCompany servCompany, servUser servUser) + private readonly servTaxPayer _servTaxPayer; + public CompanyController(servCompany servCompany, servUser servUser, servTaxPayer servTaxPayer) { _servUser = servUser; - _servCompany = servCompany; + _servCompany = servCompany; + _servTaxPayer = servTaxPayer; } [HttpPost("ChangeLogo")] public async Task> ChangeLogo(byte[] logo) { if (logo == null) return BadRequest(); - var claim = HttpContext.User.Claims.First(c => c.Type == "UserID"); + + var claim = HttpContext.User.Claims.First(c => c.Type == "UserID"); var UserID = claim.Value; var result = await _servUser.GetUserByUserID(Convert.ToInt32(UserID)); var company = result?.RolUsers.First().Company; @@ -44,5 +49,49 @@ namespace Back.Controllers await _servUser.UpdateUser(user); return Ok(await _servCompany.AddORUpdateCompanyBoolResult(company)); } + [HttpGet("TaxPayerInfo")] + public async Task> 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, + PrivateKey = company.PrivateKey , + UniqeMemory = company.UniqeMemory , + BranchID=company.BranchID, + }); + } + [HttpPut("ChangeTaxPayerInfo")] + public async Task> 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)); + + if (!string.IsNullOrEmpty(model.BranchID) && (model.BranchID.Length > 10 || !int.TryParse(model.BranchID, out int a))) + return BadRequest(new List {"مقدار کد شعبه صحیح نمی باشد" }); + + if (!string.IsNullOrEmpty(model.UniqeMemory) && (model.UniqeMemory.Length !=6 )) + return BadRequest(new List { "مقدار حافظه مالیاتی صحیح نمی باشد" }); + + 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 { "به دلیل اینکه صورتحسابی با مشخصات کلیدی شما به سازمان مالیات ارسال شده امکان تغییر این موارد را ندارید" + + '\n' + "فیلدهای کلیدی شامل (کداقتصادی،شناسه حافظه مالیاتی،کلید خصوصی)" }); + + if (await _servTaxPayer.CheckingTheCompanyKeyInformation(company.ID, model.UniqeMemory, model.PrivateKey, model.EconomicCode)) + return BadRequest(new List { "فیلدهای کلیدی شامل (کداقتصادی،شناسه حافظه مالیاتی،کلید خصوصی)" + " برای شرکت دیگری ثبت شده است" }); + + + company.EconomicCode = model.EconomicCode; + company.PrivateKey = model.PrivateKey; + company.UniqeMemory = model.UniqeMemory; + company.BranchID = model.BranchID; + return Ok(await _servCompany.AddORUpdateCompanyBoolResult(company)); + } } } diff --git a/Back/Program.cs b/Back/Program.cs index 3890015..8164f53 100644 --- a/Back/Program.cs +++ b/Back/Program.cs @@ -36,6 +36,7 @@ builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); +builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(c => new mpNuget.RestClient("09119660045", "C54S2")); diff --git a/Back/Services/servTaxPayer.cs b/Back/Services/servTaxPayer.cs new file mode 100644 index 0000000..6ae8c2d --- /dev/null +++ b/Back/Services/servTaxPayer.cs @@ -0,0 +1,27 @@ +using Back.Common.Enums; +using Back.Data.Contracts; +using Back.Data.Models; +using Microsoft.EntityFrameworkCore; + +namespace Back.Services +{ + public class servTaxPayer + { + private readonly IAsyncRepository _repoSentTax; + public servTaxPayer(IAsyncRepository repoSentTax) + { + _repoSentTax = repoSentTax; + } + public async Task ExistSuccessfulorSendorpendingInvoiceinCompanyID(int CompanyID) + { + return await _repoSentTax.Get(w => w.invoice.CompanyID == CompanyID && (w.SentStatus == SentStatus.Successful || w.SentStatus == SentStatus.Send || w.SentStatus == SentStatus.pending)).AnyAsync(); + } + public async Task CheckingTheCompanyKeyInformation(int CompanyID, string UniqeMemory, string PrivateKey, string EconomicCode) + { + return await _repoSentTax.Get(w => (w.invoice.company.UniqeMemory == UniqeMemory || w.invoice.company.PrivateKey == PrivateKey || w.invoice.company.EconomicCode == EconomicCode) + && (w.SentStatus == SentStatus.Successful || w.SentStatus == SentStatus.Send || w.SentStatus == SentStatus.pending) + && w.invoice.CompanyID != CompanyID).AnyAsync(); + } + + } +} diff --git a/Shared/DTOs/TaxPayerInfoDto.cs b/Shared/DTOs/TaxPayerInfoDto.cs new file mode 100644 index 0000000..943acf0 --- /dev/null +++ b/Shared/DTOs/TaxPayerInfoDto.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Shared.DTOs +{ + public class TaxPayerInfoDto + { + public string? EconomicCode { get; set; } + public string? UniqeMemory { get; set; } + public string? PrivateKey { get; set; } + public string? BranchID { get; set; } + } +} diff --git a/TaxPayerFull/Layout/PanelNavMenu.razor b/TaxPayerFull/Layout/PanelNavMenu.razor index 09b89e6..33f86b7 100644 --- a/TaxPayerFull/Layout/PanelNavMenu.razor +++ b/TaxPayerFull/Layout/PanelNavMenu.razor @@ -40,19 +40,19 @@