using Back.Common; using Back.Data.Contracts; using Back.Data.Models; using Microsoft.EntityFrameworkCore; namespace Back.Services { public class CheckPermission { private readonly IAsyncRepository _repoPermissionPeriod; private readonly IAsyncRepository _repoPermissionUser; public CheckPermission(IAsyncRepository repoPermissionPeriod ,IAsyncRepository repoPermissionUser) { _repoPermissionPeriod = repoPermissionPeriod; _repoPermissionUser = repoPermissionUser; } private async Task AllowPermissionInCompany(int CompanyID,int PermissionID,int Allowednumber = 1) { PermissionPeriod? permissionPeriod = _repoPermissionPeriod .Get(w => w.CompanyID == CompanyID && w.PermissionID == PermissionID && (!w.IsLocked.HasValue || !w.IsLocked.Value)) .FirstOrDefault(); if (permissionPeriod == null) return false; //تعداد if (permissionPeriod.CalculationTypeID == 1) { if (permissionPeriod.RemainingAmount < Allowednumber) return false; //permissionPeriod.RemainingAmount -= 1; } //تا تاریخ else if (permissionPeriod.CalculationTypeID == 3) { string date = $"{permissionPeriod.RemainingAmount.ToString().Substring(0, 4)}/{permissionPeriod.RemainingAmount.ToString().Substring(4, 2)}/{permissionPeriod.RemainingAmount.ToString().Substring(6, 2)}"; DateTime dateTime = date.ToMiladi(); if (DateTime.Now > dateTime) return false; } return await _repoPermissionPeriod.UpdateAsync(permissionPeriod); } public async Task AllowPermission(int UserID,int CompanyID, int PermissionID) { return await _repoPermissionUser .Get(w => w.RolUser.UserID == UserID && w.RolUser.CompanyID == CompanyID && w.PermissionID==PermissionID) .AnyAsync(); } public async Task ExtensionofAccess(int CompanyID, int PermissionID, string value) { PermissionPeriod? permissionPeriod = _repoPermissionPeriod .Get(w => w.CompanyID == CompanyID && w.PermissionID == PermissionID && (!w.IsLocked.HasValue || !w.IsLocked.Value)) .FirstOrDefault(); //تعداد if (permissionPeriod.CalculationTypeID == 1) { if (permissionPeriod.RemainingAmount < 0) permissionPeriod.RemainingAmount = Convert.ToInt32(value); permissionPeriod.RemainingAmount += Convert.ToInt32(value); } try { return await _repoPermissionPeriod.UpdateAsync(permissionPeriod); //SysLog log = new SysLog() //{ // TraceIdentifierID = _httpContextAccessor.HttpContext.TraceIdentifier, // Datetime = DateTime.Now.ConvertMiladiToShamsi(), // Method = $"{_httpContextAccessor.HttpContext.Request.Method}/{this.GetType().FullName}/ExtensionofAccess", // Value = $"{permissionPeriod.RemainingAmount - Convert.ToInt32(value)}+({value})={permissionPeriod.RemainingAmount}", // Route = _httpContextAccessor.HttpContext.Request.Path, // Type = "User" //}; //_contextMongodb.InsertItem(log); } catch (Exception ex) { //SysLog log = new SysLog() //{ // TraceIdentifierID = _httpContextAccessor.HttpContext.TraceIdentifier, // Datetime = DateTime.Now.ConvertMiladiToShamsi(), // Method = $"{_httpContextAccessor.HttpContext.Request.Method}/{this.GetType().FullName}/ExtensionofAccess", // Value = ex.Message, // Route = _httpContextAccessor.HttpContext.Request.Path, // Type = "catch" //}; //_contextMongodb.InsertItem(log); return false; } } //--------Customer--------- #region Customer public async Task AllowAddCustomerInCompany(int CompanyID, int Allowednumber = 1) { //مشتری int PermissionID = 5; return await AllowPermissionInCompany(CompanyID, PermissionID,Allowednumber); } public async Task AllowSYSGetCustomer(int UserID, int CompanyID) { //مشتری int PermissionID = 5; return await AllowPermission(UserID, CompanyID, PermissionID); } public async Task AllowSYSAddCustomer(int UserID, int CompanyID) { //مشتری int PermissionID = 7; return await AllowPermission(UserID,CompanyID, PermissionID); } public async Task AllowSYSDeleteCustomer(int UserID, int CompanyID) { //مشتری int PermissionID = 9; return await AllowPermission(UserID, CompanyID, PermissionID); } public async Task AllowSYSUpdateCustomer(int UserID, int CompanyID) { //مشتری int PermissionID = 8; return await AllowPermission(UserID, CompanyID, PermissionID); } #endregion //-----------COD----------- #region COD public async Task AllowAddCODInCompany(int CompanyID,int Allowednumber=1) { //کالا int PermissionID = 4; return await AllowPermissionInCompany(CompanyID, PermissionID,Allowednumber); } public async Task AllowSYSGetCOD(int UserID, int CompanyID) { //کالا int PermissionID = 4; return await AllowPermission(UserID, CompanyID, PermissionID); } public async Task AllowSYSAddCOD(int UserID, int CompanyID) { //کالا int PermissionID = 10; return await AllowPermission(UserID, CompanyID, PermissionID); } public async Task AllowSYSDeleteCOD(int UserID, int CompanyID) { //کالا int PermissionID = 12; return await AllowPermission(UserID, CompanyID, PermissionID); } public async Task AllowSYSUpdateCOD(int UserID, int CompanyID) { //کالا int PermissionID = 11; return await AllowPermission(UserID, CompanyID, PermissionID); } #endregion //--------Invoice--------- #region Invoice public async Task AllowAddInvoiceInCompany(int CompanyID, int Allowednumber = 1) { int PermissionID = 3; return await AllowPermissionInCompany(CompanyID, PermissionID, Allowednumber); } public async Task AllowSYSGetInvoice(int UserID, int CompanyID) { int PermissionID = 3; return await AllowPermission(UserID, CompanyID, PermissionID); } public async Task AllowSYSAddInvoice(int UserID, int CompanyID) { int PermissionID = 13; return await AllowPermission(UserID, CompanyID, PermissionID); } public async Task AllowSYSDeleteInvoice(int UserID, int CompanyID) { int PermissionID = 15; return await AllowPermission(UserID, CompanyID, PermissionID); } public async Task AllowSYSUpdateInvoice(int UserID, int CompanyID) { int PermissionID = 14; return await AllowPermission(UserID, CompanyID, PermissionID); } #endregion #region TaxPayer public async Task AllowSendTaxPayerInCompany(int CompanyID) { int PermissionID = 16; return await AllowPermissionInCompany(CompanyID, PermissionID); } public async Task AllowSYSGetTaxPayer(int UserID, int CompanyID) { int PermissionID = 16; return await AllowPermission(UserID, CompanyID, PermissionID); } public async Task AllowSYSSendTaxPayer(int UserID, int CompanyID) { int PermissionID = 16; return await AllowPermission(UserID, CompanyID, PermissionID); } #endregion } }