diff --git a/0_Framework/0_Framework.csproj b/0_Framework/0_Framework.csproj
index 04624e92..1de86aff 100644
--- a/0_Framework/0_Framework.csproj
+++ b/0_Framework/0_Framework.csproj
@@ -15,6 +15,8 @@
+
+
diff --git a/0_Framework/Application/AuthHelper.cs b/0_Framework/Application/AuthHelper.cs
index bb94f1b2..50e221b2 100644
--- a/0_Framework/Application/AuthHelper.cs
+++ b/0_Framework/Application/AuthHelper.cs
@@ -40,7 +40,9 @@ public class AuthHelper : IAuthHelper
result.Mobile = claims.FirstOrDefault(x => x is { Type: "Mobile" }).Value;
result.SubAccountId = long.Parse(claims.FirstOrDefault(x => x.Type == "SubAccountId").Value);
result.WorkshopName = claims.FirstOrDefault(x => x is { Type: "WorkshopName" })?.Value;
- return result;
+ result.Permissions = Tools.DeserializeFromBsonList(claims.FirstOrDefault(x => x is { Type: "permissions" })?.Value);
+ result.RoleName = claims.FirstOrDefault(x => x is { Type: "RoleName" })?.Value;
+ return result;
}
public List GetPermissions()
diff --git a/0_Framework/Application/Enums/ActivationStatus.cs b/0_Framework/Application/Enums/ActivationStatus.cs
new file mode 100644
index 00000000..c125f5bd
--- /dev/null
+++ b/0_Framework/Application/Enums/ActivationStatus.cs
@@ -0,0 +1,8 @@
+namespace _0_Framework.Application.Enums;
+
+public enum ActivationStatus
+{
+ None = 0,
+ Active = 1,
+ DeActive = 2
+}
\ No newline at end of file
diff --git a/0_Framework/Application/Enums/LegalType.cs b/0_Framework/Application/Enums/LegalType.cs
new file mode 100644
index 00000000..779cdccc
--- /dev/null
+++ b/0_Framework/Application/Enums/LegalType.cs
@@ -0,0 +1,8 @@
+namespace _0_Framework.Application.Enums;
+
+public enum LegalType
+{
+ None = 0,
+ Real = 1,
+ Legal = 2
+}
\ No newline at end of file
diff --git a/0_Framework/Application/PaymentGateway/AqayePardakhtPaymentGateway.cs b/0_Framework/Application/PaymentGateway/AqayePardakhtPaymentGateway.cs
new file mode 100644
index 00000000..948910ac
--- /dev/null
+++ b/0_Framework/Application/PaymentGateway/AqayePardakhtPaymentGateway.cs
@@ -0,0 +1,93 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Http;
+using System.Net.Http.Json;
+using System.Security.Policy;
+using System.Security.Principal;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace _0_Framework.Application.PaymentGateway;
+
+public class AqayePardakhtPaymentGateway:IPaymentGateway
+{
+ private const string Pin = "86EAF2C4D052F7D8759F";
+ private const string AccountNumber = "AP.1042276242";
+ private const string EncryptedKey = "130D2@D2923";
+
+ private readonly HttpClient _httpClient;
+
+ public AqayePardakhtPaymentGateway(IHttpClientFactory httpClientFactory)
+ {
+ _httpClient = httpClientFactory.CreateClient();
+ }
+
+ public async Task Create(CreatePaymentGatewayRequest command,CancellationToken cancellationToken =default)
+ {
+ var response = await _httpClient.PostAsJsonAsync("https://panel.aqayepardakht.ir/api/v2/create", new
+ {
+ pin = Pin,
+ amount = command.Amount,
+ callback = command.CallBackUrl,
+ card_number = command.CardNumber,
+ invoice_id = command.InvoiceId,
+ mobile = command.Mobile,
+ email = command.Email,
+ description = command.Description,
+ }, cancellationToken: cancellationToken);
+
+ var result = await response.Content.ReadFromJsonAsync(cancellationToken: cancellationToken);
+ return result;
+ }
+
+ public string GetStartPayUrl(string transactionId) =>
+ $"https://panel.aqayepardakht.ir/startpay/{transactionId}";
+
+ public async Task Verify(VerifyPaymentGateWayRequest command, CancellationToken cancellationToken = default)
+ {
+ var response = await _httpClient.PostAsJsonAsync("https://panel.aqayepardakht.ir/api/v2/verify", new
+ {
+ pin = Pin,
+ amount = command.Amount,
+ transid = command.TransactionId,
+ }, cancellationToken: cancellationToken);
+
+ var result = await response.Content.ReadFromJsonAsync(cancellationToken: cancellationToken);
+ return result;
+ }
+
+ public async Task CreateSandBox(CreatePaymentGatewayRequest command, CancellationToken cancellationToken = default)
+ {
+ var response = await _httpClient.PostAsJsonAsync("https://panel.aqayepardakht.ir/api/v2/create", new
+ {
+ pin = "sandbox",
+ amount = command.Amount,
+ callback = command.CallBackUrl,
+ card_number = command.Amount,
+ invoice_id = command.InvoiceId,
+ mobile = command.Mobile,
+ email = command.Email,
+ description = command.Email,
+ }, cancellationToken: cancellationToken);
+
+ var result = await response.Content.ReadFromJsonAsync(cancellationToken: cancellationToken);
+ return result;
+ }
+
+ public string GetStartPaySandBoxUrl(string transactionId) =>
+ $"https://panel.aqayepardakht.ir/startpay/sandbox/{transactionId}";
+
+ public async Task GetWalletAmount(CancellationToken cancellationToken)
+ {
+ var response =await _httpClient.PostAsJsonAsync("https://panel.aqayepardakht.ir/api/v2/getmoney", new
+ {
+ account=AccountNumber,
+ code = EncryptedKey
+ }, cancellationToken: cancellationToken);
+ var jsonString = await response.Content.ReadAsStringAsync(cancellationToken);
+ var result = await response.Content.ReadFromJsonAsync(cancellationToken);
+ return result;
+ }
+}
\ No newline at end of file
diff --git a/0_Framework/Application/PaymentGateway/IPaymentGateway.cs b/0_Framework/Application/PaymentGateway/IPaymentGateway.cs
new file mode 100644
index 00000000..c4b80ba3
--- /dev/null
+++ b/0_Framework/Application/PaymentGateway/IPaymentGateway.cs
@@ -0,0 +1,60 @@
+using Microsoft.AspNetCore.Server.HttpSys;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Text.Json.Serialization;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace _0_Framework.Application.PaymentGateway;
+
+public interface IPaymentGateway
+{
+ Task Create(CreatePaymentGatewayRequest command, CancellationToken cancellationToken =default);
+
+ string GetStartPayUrl(string transactionId);
+ Task Verify(VerifyPaymentGateWayRequest command, CancellationToken cancellationToken=default);
+ Task CreateSandBox(CreatePaymentGatewayRequest command, CancellationToken cancellationToken=default);
+ string GetStartPaySandBoxUrl(string transactionId);
+ Task GetWalletAmount(CancellationToken cancellationToken);
+
+}
+public class PaymentGatewayResponse
+{
+ [JsonPropertyName("status")]
+ public string Status { get; set; }
+
+ [JsonPropertyName("code")]
+ public int? ErrorCode { get; set; }
+
+ [JsonPropertyName("transid")]
+ public string TransactionId { get; set; }
+}
+
+public class WalletAmountResponse
+{
+ [JsonPropertyName("status")]
+ public string Status { get; set; }
+ [JsonPropertyName("money")]
+ public double Amount { get; set; }
+ [JsonPropertyName("code")]
+ public int Code { get; set; }
+}
+
+public class CreatePaymentGatewayRequest
+{
+ public double Amount { get; set; }
+ public string CallBackUrl { get; set; }
+ public string InvoiceId { get; set; }
+ public string CardNumber { get; set; }
+ public string Mobile { get; set; }
+ public string Email { get; set; }
+ public string Description { get; set; }
+}
+
+public class VerifyPaymentGateWayRequest
+{
+ public string TransactionId { get; set; }
+ public double Amount { get; set; }
+}
\ No newline at end of file
diff --git a/0_Framework/Application/SelectListViewModel.cs b/0_Framework/Application/SelectListViewModel.cs
new file mode 100644
index 00000000..2262df1a
--- /dev/null
+++ b/0_Framework/Application/SelectListViewModel.cs
@@ -0,0 +1,7 @@
+namespace _0_Framework.Application;
+
+public class SelectListViewModel
+{
+ public long Id { get; set; }
+ public string Text { get; set; }
+}
\ No newline at end of file
diff --git a/0_Framework/Application/Tools.cs b/0_Framework/Application/Tools.cs
index 76c9bdda..d959c33e 100644
--- a/0_Framework/Application/Tools.cs
+++ b/0_Framework/Application/Tools.cs
@@ -41,6 +41,23 @@ public static class Tools
return Regex.IsMatch(mobileNo, "^((09))(\\d{9})$");
}
+ ///
+ /// تاریخ شروع و تعداد ماه را میگیرد و تاریخ پایان قراردا را بر میگرداند
+ ///
+ ///
+ ///
+ ///
+ public static (DateTime endDateGr, string endDateFa) FindEndOfContract(string startDate, string monthPlus)
+ {
+
+ int startYear = Convert.ToInt32(startDate.Substring(0, 4));
+ int startMonth = Convert.ToInt32(startDate.Substring(5, 2));
+ int startDay = Convert.ToInt32(startDate.Substring(8, 2));
+ var start = new PersianDateTime(startYear, startMonth, startDay);
+ var end = (start.AddMonths(Convert.ToInt32(monthPlus))).AddDays(-1);
+ return ($"{end}".ToGeorgianDateTime(), $"{end}");
+
+ }
///
/// دریافت روزهای کارکرد پرسنل در لیست بیمه ماه مشخص شده
diff --git a/0_Framework/Exceptions/Handler/CustomExceptionHandler.cs b/0_Framework/Exceptions/Handler/CustomExceptionHandler.cs
new file mode 100644
index 00000000..a3a8fc4c
--- /dev/null
+++ b/0_Framework/Exceptions/Handler/CustomExceptionHandler.cs
@@ -0,0 +1,75 @@
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Diagnostics;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Logging;
+
+
+namespace _0_Framework.Exceptions.Handler;
+
+public class CustomExceptionHandler : IExceptionHandler
+{
+ private readonly ILogger _logger;
+
+ public CustomExceptionHandler(ILogger logger)
+ {
+ _logger = logger;
+ }
+
+ public async ValueTask TryHandleAsync(HttpContext context, Exception exception, CancellationToken cancellationToken)
+ {
+ _logger.LogError(
+ "Error Message: {exceptionMessage}, Time of occurrence {time}",
+ exception.Message, DateTime.UtcNow);
+
+ (string Detail, string Title, int StatusCode) details = exception switch
+ {
+ InternalServerException =>
+ (
+ exception.Message,
+ exception.GetType().Name,
+ context.Response.StatusCode = StatusCodes.Status500InternalServerError
+ ),
+ BadRequestException =>
+ (
+ exception.Message,
+ exception.GetType().Name,
+ context.Response.StatusCode = StatusCodes.Status400BadRequest
+ ),
+ NotFoundException =>
+ (
+ exception.Message,
+ exception.GetType().Name,
+ context.Response.StatusCode = StatusCodes.Status404NotFound
+ ),
+ UnAuthorizeException =>
+ (
+ exception.Message,
+ exception.GetType().Name,
+ context.Response.StatusCode = StatusCodes.Status401Unauthorized
+ ),
+ _ =>
+ (
+ exception.Message,
+ exception.GetType().Name,
+ context.Response.StatusCode = StatusCodes.Status500InternalServerError
+ )
+ };
+
+ var problemDetails = new ProblemDetails
+ {
+ Title = details.Title,
+ Detail = details.Detail,
+ Status = details.StatusCode,
+ Instance = context.Request.Path
+ };
+
+ problemDetails.Extensions.Add("traceId", context.TraceIdentifier);
+
+ await context.Response.WriteAsJsonAsync(problemDetails, cancellationToken: cancellationToken);
+
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/0_Framework/Exceptions/UnAuthorizeException.cs b/0_Framework/Exceptions/UnAuthorizeException.cs
new file mode 100644
index 00000000..83edb8f9
--- /dev/null
+++ b/0_Framework/Exceptions/UnAuthorizeException.cs
@@ -0,0 +1,10 @@
+using System;
+
+namespace _0_Framework.Exceptions;
+
+public class UnAuthorizeException:Exception
+{
+ public UnAuthorizeException(string message) : base(message)
+ {
+ }
+}
\ No newline at end of file
diff --git a/Company.Domain/ContactUsAgg/ContactUs.cs b/Company.Domain/ContactUsAgg/ContactUs.cs
new file mode 100644
index 00000000..43f9825f
--- /dev/null
+++ b/Company.Domain/ContactUsAgg/ContactUs.cs
@@ -0,0 +1,26 @@
+using _0_Framework.Domain;
+
+namespace Company.Domain.ContactUsAgg;
+
+public class ContactUs:EntityBase
+{
+ public ContactUs(string firstName, string lastName, string email, string phoneNumber, string title, string message)
+ {
+ FirstName = firstName.Trim();
+ LastName = lastName.Trim();
+ Email = email;
+ PhoneNumber = phoneNumber;
+ Title = title;
+ Message = message;
+ FullName = FirstName + " " + LastName;
+ }
+
+ public string FirstName { get; private set; }
+ public string LastName { get; private set; }
+ public string Email { get; private set; }
+ public string PhoneNumber { get; private set; }
+ public string Title { get; private set; }
+ public string Message { get; private set; }
+ public string FullName { get; private set; }
+
+}
\ No newline at end of file
diff --git a/Company.Domain/ContactUsAgg/IContactUsRepository.cs b/Company.Domain/ContactUsAgg/IContactUsRepository.cs
new file mode 100644
index 00000000..8dbe78bd
--- /dev/null
+++ b/Company.Domain/ContactUsAgg/IContactUsRepository.cs
@@ -0,0 +1,8 @@
+using _0_Framework.Domain;
+
+namespace Company.Domain.ContactUsAgg;
+
+public interface IContactUsRepository : IRepository
+{
+
+}
\ No newline at end of file
diff --git a/Company.Domain/ContarctingPartyAgg/IPersonalContractingPartyRepository.cs b/Company.Domain/ContarctingPartyAgg/IPersonalContractingPartyRepository.cs
index 0ba87c2d..17e588a8 100644
--- a/Company.Domain/ContarctingPartyAgg/IPersonalContractingPartyRepository.cs
+++ b/Company.Domain/ContarctingPartyAgg/IPersonalContractingPartyRepository.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using _0_Framework.Application;
using _0_Framework.Domain;
using AccountManagement.Application.Contracts.Account;
+using System.Threading.Tasks;
namespace Company.Domain.ContarctingPartyAgg;
@@ -42,6 +43,34 @@ public interface IPersonalContractingPartyRepository :IRepository
+ /// لیست طرف حساب ها
+ ///
+ ///
+ ///
+ Task> GetList(ContractingPartyGetListSearchModel searchModel);
+ ///
+ /// لیست طرف حساب برای سلکت لیست سرچ
+ ///
+ ///
+ Task> GetSelectList();
+
+ ///
+ /// لیستی از شماره ملی یا شناسه ملی بر اساس حقیقی یا حقوقی بودن
+ ///
+ ///
+ Task> GetNationalCodeOrNationalId();
+
+ ///
+ /// غیرفعال کردن طرف حساب و زیرمجموعه های آن
+ ///
+ ///
+ ///
+ Task> DeactivateWithSubordinates(long id);
+
+ void Remove(PersonalContractingParty entity);
+ Task GetRealDetails(long id);
+ Task GetLegalDetails(long id);
}
\ No newline at end of file
diff --git a/Company.Domain/ContarctingPartyAgg/PersonalContractingParty.cs b/Company.Domain/ContarctingPartyAgg/PersonalContractingParty.cs
index 7097b061..a3fa2c40 100644
--- a/Company.Domain/ContarctingPartyAgg/PersonalContractingParty.cs
+++ b/Company.Domain/ContarctingPartyAgg/PersonalContractingParty.cs
@@ -213,4 +213,14 @@ public class PersonalContractingParty : EntityBase
this.Gender = gender;
this.IsAuthenticated = true;
}
+
+ public void RegisterComplete(string fatherName, string idNumberSeri, string idNumberSerial, DateTime dateOfBirth, Gender gender)
+ {
+ this.FatherName = fatherName;
+ this.IdNumberSeri = idNumberSeri;
+ this.IdNumberSerial = idNumberSerial;
+ this.DateOfBirth = dateOfBirth;
+ this.Gender = gender;
+ this.IsAuthenticated = true;
+ }
}
\ No newline at end of file
diff --git a/Company.Domain/EmployeeAgg/IEmployeeRepository.cs b/Company.Domain/EmployeeAgg/IEmployeeRepository.cs
index ae689fb6..fa4f6eb3 100644
--- a/Company.Domain/EmployeeAgg/IEmployeeRepository.cs
+++ b/Company.Domain/EmployeeAgg/IEmployeeRepository.cs
@@ -71,7 +71,12 @@ public interface IEmployeeRepository : IRepository
Task GetEmployeeEditInEmployeeDocumentWorkFlow(long employeeId,
long workshopId);
- #endregion
+ #endregion
+
+ #region Api
+ Task> GetSelectList(string searchText);
+ Task> GetList(GetEmployeeListSearchModel searchModel);
+ #endregion
}
\ No newline at end of file
diff --git a/Company.Domain/FinancialStatmentAgg/IFinancialStatmentRepository.cs b/Company.Domain/FinancialStatmentAgg/IFinancialStatmentRepository.cs
index 8bed15be..56d26347 100644
--- a/Company.Domain/FinancialStatmentAgg/IFinancialStatmentRepository.cs
+++ b/Company.Domain/FinancialStatmentAgg/IFinancialStatmentRepository.cs
@@ -13,4 +13,6 @@ public interface IFinancialStatmentRepository : IRepository Search(FinancialStatmentSearchModel searchModel);
+ Task GetClientFinancialStatement(long accountId,
+ ClientFinancialStatementSearchModel searchModel);
}
\ No newline at end of file
diff --git a/Company.Domain/PaymentTransactionAgg/IPaymentTransactionRepository.cs b/Company.Domain/PaymentTransactionAgg/IPaymentTransactionRepository.cs
new file mode 100644
index 00000000..c3ec23fe
--- /dev/null
+++ b/Company.Domain/PaymentTransactionAgg/IPaymentTransactionRepository.cs
@@ -0,0 +1,12 @@
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using _0_Framework.Domain;
+using CompanyManagment.App.Contracts.PaymentTransaction;
+
+namespace Company.Domain.PaymentTransactionAgg;
+
+public interface IPaymentTransactionRepository:IRepository
+{
+ Task> GetPaymentTransactionList(
+ GetPaymentTransactionListSearchModel searchModel);
+}
\ No newline at end of file
diff --git a/Company.Domain/PaymentTransactionAgg/PaymentTransaction.cs b/Company.Domain/PaymentTransactionAgg/PaymentTransaction.cs
new file mode 100644
index 00000000..8becf007
--- /dev/null
+++ b/Company.Domain/PaymentTransactionAgg/PaymentTransaction.cs
@@ -0,0 +1,104 @@
+using System;
+using _0_Framework.Domain;
+using CompanyManagment.App.Contracts.PaymentTransaction;
+
+namespace Company.Domain.PaymentTransactionAgg
+{
+ ///
+ /// نمایانگر یک تراکنش پرداخت شامل جزئیات طرف قرارداد، اطلاعات بانکی، وضعیت تراکنش و مبلغ.
+ ///
+ public class PaymentTransaction:EntityBase
+ {
+ ///
+ /// سازنده کلاس PaymentTransaction با دریافت اطلاعات تراکنش.
+ ///
+ /// شناسه طرف قرارداد
+ /// نام صاحب حساب بانکی
+ /// نام بانک
+ /// شماره کارت
+ /// شماره شبا
+ /// شماره حساب بانکی
+ /// وضعیت تراکنش پرداخت
+ /// مبلغ تراکنش
+ /// شناسه یکتای تراکنش
+ ///
+ public PaymentTransaction(long contractingPartyId,
+ string bankAccountHolderName,
+ string bankName,
+ string cardNumber,
+ string shebaNumber,
+ string accountNumber,
+ PaymentTransactionStatus status,
+ double amount,
+ string transactionId,
+ string contractingPartyName)
+ {
+ TransactionDate = DateTime.Now;
+ ContractingPartyId = contractingPartyId;
+ BankAccountHolderName = bankAccountHolderName;
+ BankName = bankName;
+ CardNumber = cardNumber;
+ ShebaNumber = shebaNumber;
+ AccountNumber = accountNumber;
+ Status = status;
+ Amount = amount;
+ TransactionId = transactionId;
+ ContractingPartyName = contractingPartyName;
+ }
+
+ ///
+ /// تاریخ و زمان انجام پرداخت
+ ///
+ public DateTime TransactionDate { get; set; }
+
+ ///
+ /// شناسه طرف حساب
+ ///
+ public long ContractingPartyId { get; set; }
+
+ ///
+ /// نام طرف حساب
+ ///
+ public string ContractingPartyName { get; set; }
+
+ ///
+ /// نام صاحب حساب بانکی
+ ///
+ public string BankAccountHolderName { get; set; }
+
+ ///
+ /// نام بانک
+ ///
+ public string BankName { get; set; }
+
+ ///
+ /// شماره کارت
+ ///
+ public string CardNumber { get; set; }
+
+ ///
+ /// شماره شبا
+ ///
+ public string ShebaNumber { get; set; }
+
+ ///
+ /// شماره حساب بانکی
+ ///
+ public string AccountNumber { get; set; }
+
+ ///
+ /// وضعیت تراکنش پرداخت
+ ///
+ public PaymentTransactionStatus Status { get; set; }
+
+ ///
+ /// مبلغ تراکنش
+ ///
+ public double Amount { get; set; }
+
+ ///
+ /// شناسه یکتای تراکنش
+ ///
+ public string TransactionId { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/Company.Domain/RepresentativeAgg/IRepresentativeRepository.cs b/Company.Domain/RepresentativeAgg/IRepresentativeRepository.cs
index 784600be..e25364ad 100644
--- a/Company.Domain/RepresentativeAgg/IRepresentativeRepository.cs
+++ b/Company.Domain/RepresentativeAgg/IRepresentativeRepository.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.Threading.Tasks;
using _0_Framework.Application;
using _0_Framework.Domain;
using CompanyManagment.App.Contracts.PersonalContractingParty;
@@ -20,4 +21,10 @@ public interface IRepresentativeRepository : IRepository
#endregion
+ #region Api
+ Task> GetList(RepresentativeGetListSearchModel searchModel);
+ bool HasAnyContractingParty(long id);
+ Task> GetSelectList();
+ #endregion
+
}
\ No newline at end of file
diff --git a/Company.Domain/TemporaryClientRegistrationAgg/IInstitutionContractTempRepository.cs b/Company.Domain/TemporaryClientRegistrationAgg/IInstitutionContractTempRepository.cs
index 7d9fe9a7..60212417 100644
--- a/Company.Domain/TemporaryClientRegistrationAgg/IInstitutionContractTempRepository.cs
+++ b/Company.Domain/TemporaryClientRegistrationAgg/IInstitutionContractTempRepository.cs
@@ -1,4 +1,5 @@
-using System.Threading.Tasks;
+using System.Collections.Generic;
+using System.Threading.Tasks;
using _0_Framework_b.Domain;
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
@@ -15,4 +16,11 @@ public interface IInstitutionContractTempRepository : IRepository
///
Task GetInstitutionContractTemp(long id,long contractingPartyTempId);
+
+ ///
+ /// دریافت لیست طرف حساب هایی که ثبت نام آنها تکمیل شده
+ /// جهت نمایش در کارپوشه
+ ///
+ ///
+ Task> GetAllCompletedRegistration();
}
\ No newline at end of file
diff --git a/Company.Domain/TemporaryClientRegistrationAgg/IWorkshopTempRepository.cs b/Company.Domain/TemporaryClientRegistrationAgg/IWorkshopTempRepository.cs
index 5ba19824..f9b99c56 100644
--- a/Company.Domain/TemporaryClientRegistrationAgg/IWorkshopTempRepository.cs
+++ b/Company.Domain/TemporaryClientRegistrationAgg/IWorkshopTempRepository.cs
@@ -14,5 +14,7 @@ public interface IWorkshopTempRepository : IRepository
///
Task> GetWorkshopTemp(long contractingPartyTemp);
+ System.Threading.Tasks.Task RemoveWorkshopTemps(List workshopTempIds);
+
}
\ No newline at end of file
diff --git a/Company.Domain/TemporaryClientRegistrationAgg/InstitutionContractTemp.cs b/Company.Domain/TemporaryClientRegistrationAgg/InstitutionContractTemp.cs
index 62974a44..198c3737 100644
--- a/Company.Domain/TemporaryClientRegistrationAgg/InstitutionContractTemp.cs
+++ b/Company.Domain/TemporaryClientRegistrationAgg/InstitutionContractTemp.cs
@@ -34,12 +34,14 @@ public class InstitutionContractTemp : EntityBase
/// بصورت یکجا
/// -
/// بصئورت ماهیانه
+ /// OneTime
///
public string PaymentModel { get; private set; }
///
/// مدت قرارداد
/// چند ماهه؟
+ /// "12"
///
public string PeriodModel { get; private set; }
@@ -129,6 +131,9 @@ public class InstitutionContractTemp : EntityBase
VerifyCodeEndTime = verifyCodeEndTime;
}
-
+ public void ChangeRegistrationStatus(string registrationStatus)
+ {
+ RegistrationStatus = registrationStatus;
+ }
}
\ No newline at end of file
diff --git a/Company.Domain/empolyerAgg/IEmployerRepository.cs b/Company.Domain/empolyerAgg/IEmployerRepository.cs
index 1c8dc4e7..9b64f27a 100644
--- a/Company.Domain/empolyerAgg/IEmployerRepository.cs
+++ b/Company.Domain/empolyerAgg/IEmployerRepository.cs
@@ -56,6 +56,17 @@ public interface IEmployerRepository : IRepository
#endregion
+ #region Api
+ Task> GetEmployerList(GetEmployerSearchModel searchModel);
+
+ Task GetLegalEmployerDetail(long id);
+ Task GetRealEmployerDetail(long id);
+ //Task> GetSelectList(string search);
+ Task> DeactivateWithSubordinates(long id);
+
+
+ #endregion
+
}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/CompanyManagment.App.Contracts.csproj b/CompanyManagment.App.Contracts/CompanyManagment.App.Contracts.csproj
index 2759a76d..b2977176 100644
--- a/CompanyManagment.App.Contracts/CompanyManagment.App.Contracts.csproj
+++ b/CompanyManagment.App.Contracts/CompanyManagment.App.Contracts.csproj
@@ -1,17 +1,22 @@
-
+
-
- net8.0
-
+
+ net8.0
+ true
+
-
-
-
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/CompanyManagment.App.Contracts/ContactUs/IContactUsApplication.cs b/CompanyManagment.App.Contracts/ContactUs/IContactUsApplication.cs
new file mode 100644
index 00000000..a286955d
--- /dev/null
+++ b/CompanyManagment.App.Contracts/ContactUs/IContactUsApplication.cs
@@ -0,0 +1,18 @@
+using _0_Framework.Application;
+
+namespace CompanyManagment.App.Contracts.ContactUs;
+
+public interface IContactUsApplication
+{
+ OperationResult Create(CreateContactUs command);
+}
+
+public class CreateContactUs
+{
+ public string FirstName { get; set; }
+ public string LastName { get; set; }
+ public string Email { get; set; }
+ public string PhoneNumber { get; set; }
+ public string Title { get; set; }
+ public string Message { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Employee/GetEmployeeListSearchModel.cs b/CompanyManagment.App.Contracts/Employee/GetEmployeeListSearchModel.cs
new file mode 100644
index 00000000..af2d923e
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Employee/GetEmployeeListSearchModel.cs
@@ -0,0 +1,38 @@
+using _0_Framework.Application.Enums;
+
+namespace CompanyManagment.App.Contracts.Employee;
+
+///
+/// مدل جستجو در لیست پرسنل در ادمین
+///
+public class GetEmployeeListSearchModel
+{
+ ///
+ /// آیدی کارفرما
+ ///
+ public long EmployerId { get; set; }
+ ///
+ /// آیدی کارگاه
+ ///
+ public long WorkshopId { get; set; }
+ ///
+ /// آیدی پرسنل
+ ///
+ public long EmployeeId { get; set; }
+ ///
+ /// کدملی
+ ///
+ public string NationalCode { get; set; }
+ ///
+ /// شماره بیمه
+ ///
+ public string InsuranceCode { get; set; }
+ ///
+ /// وضعیت پرسنل
+ ///
+ public ActivationStatus EmployeeStatus { get; set; }
+ ///
+ /// ایندکس جستجو
+ ///
+ public int PageIndex { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Employee/GetEmployeeListViewModel.cs b/CompanyManagment.App.Contracts/Employee/GetEmployeeListViewModel.cs
new file mode 100644
index 00000000..c5fde22e
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Employee/GetEmployeeListViewModel.cs
@@ -0,0 +1,44 @@
+using _0_Framework.Application;
+using _0_Framework.Application.Enums;
+
+namespace CompanyManagment.App.Contracts.Employee;
+
+///
+/// ویو مدل لیست پرسنل ادمین
+///
+public class GetEmployeeListViewModel
+{
+ ///
+ /// آیدی پرسنل
+ ///
+ public long Id { get; set; }
+ ///
+ /// نام و نام خانوادگی پرسنل
+ ///
+ public string EmployeeFullName { get; set; }
+ ///
+ /// کدملی
+ ///
+ public string NationalCode { get; set; }
+
+ ///
+ /// تعداد فرزندان
+ ///
+ public string ChildrenCount { get; set; }
+ ///
+ /// جنسیت
+ ///
+ public Gender Gender { get; set; }
+ ///
+ /// تاریخ تولد
+ ///
+ public string BirthDate { get; set; }
+ ///
+ /// شماره بیمه
+ ///
+ public string InsuranceCode { get; set; }
+ ///
+ /// وضعیت پرسنل
+ ///
+ public ActivationStatus EmployeeStatus { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Employee/IEmployeeApplication.cs b/CompanyManagment.App.Contracts/Employee/IEmployeeApplication.cs
index ec216d42..2624b605 100644
--- a/CompanyManagment.App.Contracts/Employee/IEmployeeApplication.cs
+++ b/CompanyManagment.App.Contracts/Employee/IEmployeeApplication.cs
@@ -77,6 +77,23 @@ public interface IEmployeeApplication
Task> GetEmployeeDataFromApi(string nationalCode, string birthDate);
- #endregion
+ #endregion
+
+ #region Api
+
+ ///
+ /// لیست پرسنل برای جستجو
+ ///
+ ///
+ ///
+ Task> GetSelectList(string searchText);
+
+ ///
+ /// لیست کل پرسنل
+ ///
+ ///
+ Task> GetList(GetEmployeeListSearchModel searchModel);
+
+ #endregion
}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Employer/CreateLegalEmployer.cs b/CompanyManagment.App.Contracts/Employer/CreateLegalEmployer.cs
new file mode 100644
index 00000000..a0224f7b
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Employer/CreateLegalEmployer.cs
@@ -0,0 +1,84 @@
+using System.ComponentModel.DataAnnotations;
+using _0_Framework.Application;
+using _0_Framework.Application.Enums;
+
+namespace CompanyManagment.App.Contracts.Employer;
+
+///
+/// ایجاد کارفرمای حقیقی
+///
+public class CreateLegalEmployer
+{
+ ///
+ /// آیدی طرف حساب
+ ///
+ [Required]
+ public long ContractingPartyId { get; set; }
+
+ ///
+ /// نام شرکت
+ ///
+ public string CompanyName { get; set; }
+
+ ///
+ /// شناسه ملی
+ ///
+ public string NationalId { get; set; }
+
+ ///
+ /// شماره ثبت
+ ///
+ public string RegisterId { get; set; }
+
+ ///
+ /// شماره تلفن همراه
+ ///
+ public string PhoneNumber { get; set; }
+
+ ///
+ /// شماره تلفن ثابت
+ ///
+ public string TelephoneNumber { get; set; }
+
+ ///
+ /// نام مدیر عامل
+ ///
+ public string EmployerFName { get; set; }
+ ///
+ /// نام خانوادگی مدیر عامل
+ ///
+ public string EmployerLName { get; set; }
+ ///
+ /// جنسیت مدیر عامل
+ ///
+ public Gender EmployerGender { get; set; }
+ ///
+ /// کد ملی مدیر عامل
+ ///
+ public string EmployerNationalCode { get; set; }
+ ///
+ /// شماره شناسنامه مدیر عامل
+ ///
+ public string EmployerIdNumber { get; set; }
+ ///
+ /// نام پدر مدیر عامل
+ ///
+ public string EmployerFatherName { get; set; }
+ ///
+ /// تاریخ تولد مدیر عامل
+ ///
+ public string EmployerDateOfBirth { get; set; }
+ ///
+ /// تاریخ صدور شناسنامه مدیر عامل
+ ///
+ public string EmployerDateOfIssue { get; set; }
+ ///
+ /// محل صدور شناسنامه مدیر عامل
+ ///
+ public string EmployerPlaceOfIssue { get; set; }
+
+ ///
+ /// اطلاعات سامانه ای
+ ///
+ public GovernmentSystemInfo GovernmentSystemInfo { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Employer/CreateRealEmployer.cs b/CompanyManagment.App.Contracts/Employer/CreateRealEmployer.cs
new file mode 100644
index 00000000..998e6d75
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Employer/CreateRealEmployer.cs
@@ -0,0 +1,80 @@
+using System.ComponentModel.DataAnnotations;
+using _0_Framework.Application;
+using _0_Framework.Application.Enums;
+
+namespace CompanyManagment.App.Contracts.Employer;
+
+///
+/// ایجاد کارفرما حقیقی
+///
+public class CreateRealEmployer
+{
+ ///
+ /// آیدی طرف حساب
+ ///
+ [Required]
+ public long ContractingPartyId { get; set; }
+
+ ///
+ /// جنسیت
+ ///
+ [Required]
+ public Gender Gender { get; set; }
+
+ ///
+ /// نام
+ ///
+ [Required]
+ public string FName { get; set; }
+
+ ///
+ ///نام خانوادگی
+ ///
+ [Required]
+ public string LName { get; set; }
+
+ ///
+ /// کد ملی
+ ///
+ public string NationalCode { get; set; }
+
+ ///
+ /// شماره شناسنامه
+ ///
+ public string IdNumber { get; set; }
+
+ ///
+ /// شماره تلفن همراه
+ ///
+ public string PhoneNumber { get; set; }
+
+ ///
+ /// شماره تلفن ثابت
+ ///
+ public string Telephone { get; set; }
+
+ ///
+ /// تاریخ صدور شناسنامه
+ ///
+ public string DateOfIssue { get; set; }
+
+ ///
+ /// محل صدور شناسنامه
+ ///
+ public string PlaceOfIssue { get; set; }
+
+ ///
+ /// تاریخ تولد
+ ///
+ public string DateOfBirth { get; set; }
+
+ ///
+ /// نام پدر
+ ///
+ public string FatherName { get; set; }
+
+ ///
+ /// اطلاعات سامانه ای
+ ///
+ public GovernmentSystemInfo GovernmentSystemInfo { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Employer/EditLegalEmployer.cs b/CompanyManagment.App.Contracts/Employer/EditLegalEmployer.cs
new file mode 100644
index 00000000..06d671d8
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Employer/EditLegalEmployer.cs
@@ -0,0 +1,9 @@
+namespace CompanyManagment.App.Contracts.Employer;
+
+public class EditLegalEmployer: CreateLegalEmployer
+{
+ ///
+ /// آیدی کارفرما
+ ///
+ public long Id { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Employer/EditRealEmployer.cs b/CompanyManagment.App.Contracts/Employer/EditRealEmployer.cs
new file mode 100644
index 00000000..bfe9c3e1
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Employer/EditRealEmployer.cs
@@ -0,0 +1,12 @@
+namespace CompanyManagment.App.Contracts.Employer;
+
+///
+/// ویرایش کارفرما حقیقی
+///
+public class EditRealEmployer:CreateRealEmployer
+{
+ ///
+ /// آیدی کارفرما
+ ///
+ public long Id { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Employer/GetEmployerListViewModel.cs b/CompanyManagment.App.Contracts/Employer/GetEmployerListViewModel.cs
new file mode 100644
index 00000000..f75fc4b9
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Employer/GetEmployerListViewModel.cs
@@ -0,0 +1,50 @@
+using System.Collections.Generic;
+using _0_Framework.Application.Enums;
+
+namespace CompanyManagment.App.Contracts.Employer;
+
+///
+/// مدل برای گرفتن لیست کارفرما
+///
+public class GetEmployerListViewModel
+{
+ ///
+ /// آیدی کارفرما
+ ///
+ public long Id { get; set; }
+
+ ///
+ /// کدملی / شناسه ملی
+ ///
+ public string NationalCodeOrNationalId { get; set; }
+
+ ///
+ /// نام کارفرما
+ ///
+ public string FullName { get; set; }
+
+ ///
+ /// نام های کارگاه
+ ///
+ public ICollection WorkshopNames { get; set; }
+
+ ///
+ /// دارای طرف حساب
+ ///
+ public bool HasContractingParty { get; set; }
+
+ ///
+ /// طرف حساب بلاک شده یا نه
+ ///
+ public bool HasBlockContractingParty { get; set; }
+
+ ///
+ /// نوع کارفرما
+ ///
+ public LegalType LegalType { get; set; }
+
+ ///
+ /// وضعیت کارفرما
+ ///
+ public ActivationStatus EmployerStatus { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Employer/GetEmployerSearchModel.cs b/CompanyManagment.App.Contracts/Employer/GetEmployerSearchModel.cs
new file mode 100644
index 00000000..738f6a25
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Employer/GetEmployerSearchModel.cs
@@ -0,0 +1,44 @@
+using _0_Framework.Application.Enums;
+
+namespace CompanyManagment.App.Contracts.Employer;
+
+///
+/// مدل جستجوی لیست کارفرما
+///
+public class GetEmployerSearchModel
+{
+ ///
+ /// نام شرکت / نام و نام خانوادگی
+ ///
+ public string FullNameOrCompanyName { get; set; }
+
+ ///
+ /// کدملی/ شناسه ملی
+ ///
+ public string NationalCodeOrNationalId { get; set; }
+
+ ///
+ /// شماره شناسنامه یا شماره ثبت
+ ///
+ public string IdNumberOrRegisterId { get; set; }
+
+ ///
+ /// نام طرف حساب
+ ///
+ public string ContractingPartyName { get; set; }
+
+ ///
+ /// وضعیت کارفرما
+ ///
+ public ActivationStatus EmployerStatus { get; set; }
+
+ ///
+ /// نوع کارفرما
+ ///
+ public LegalType EmployerType { get; set; }
+
+ ///
+ /// پیج ایندکس برای دسته بندی سی تایی
+ ///
+ public int PageIndex { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Employer/GetLegalEmployerDetailViewModel.cs b/CompanyManagment.App.Contracts/Employer/GetLegalEmployerDetailViewModel.cs
new file mode 100644
index 00000000..9ffe398e
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Employer/GetLegalEmployerDetailViewModel.cs
@@ -0,0 +1,120 @@
+using _0_Framework.Application;
+using _0_Framework.Application.Enums;
+
+namespace CompanyManagment.App.Contracts.Employer;
+
+///
+/// اطلاعات کارفرمای حقوقی
+///
+public class GetLegalEmployerDetailViewModel
+{
+ ///
+ /// آیدی کارفرما
+ ///
+ public long Id { get; set; }
+
+ ///
+ /// نام شرکت
+ ///
+ public string CompanyName { get; set; }
+
+ ///
+ /// شناسه ملی
+ ///
+ public string NationalId { get; set; }
+
+ ///
+ /// شماره ثبت
+ ///
+ public string RegisterId { get; set; }
+
+ ///
+ /// شماره تلفن همراه
+ ///
+ public string PhoneNumber { get; set; }
+
+ ///
+ /// شماره تلفن ثابت
+ ///
+ public string TelephoneNumber { get; set; }
+
+ ///
+ /// کد کارفرما
+ ///
+ public string EmployerNo { get; set; }
+
+ ///
+ /// نام کارفرما
+ ///
+ public string ContractingPartyName { get; set; }
+
+ ///
+ /// نام کارفرما
+ ///
+ public long ContractingPartyId { get; set; }
+
+ ///
+ /// نام و خانوادگی مدیر عامل
+ ///
+ public string CeoFullName { get; set; }
+
+ ///
+ /// نام و خانوادگی مدیر عامل
+ ///
+ public string CeoFName { get; set; }
+
+ ///
+ /// نام و خانوادگی مدیر عامل
+ ///
+ public string CeoLName { get; set; }
+
+ ///
+ /// جنسیت مدیر عامل
+ ///
+ public Gender Gender { get; set; }
+
+ ///
+ /// جنیست
+ ///
+ public string GenderStr { get; set; }
+
+ ///
+ /// ملیت
+ ///
+ public string Nationality { get; set; }
+
+ ///
+ /// نام پدر
+ ///
+ public string FatherName { get; set; }
+
+ ///
+ /// کد ملی
+ ///
+ public string NationalCode { get; set; }
+
+ ///
+ /// شماره شناسنامه
+ ///
+ public string IdNumber { get; set; }
+
+ ///
+ /// تاریخ تولد
+ ///
+ public string DateOfBirth { get; set; }
+ ///
+ /// تاریخ صدور شناسنامه
+ ///
+ public string DateOfIssue { get; set; }
+
+ ///
+ /// محل صدور شناسنامه
+ ///
+ public string PlaceOfIssue { get; set; }
+
+ ///
+ /// اطلاعات سامانه های دولتی
+ ///
+ public GovernmentSystemInfo GovernmentSystemInfo { get; set; }
+
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Employer/GetRealEmployerDetailViewModel.cs b/CompanyManagment.App.Contracts/Employer/GetRealEmployerDetailViewModel.cs
new file mode 100644
index 00000000..9ace3ab6
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Employer/GetRealEmployerDetailViewModel.cs
@@ -0,0 +1,107 @@
+using _0_Framework.Application;
+using _0_Framework.Application.Enums;
+
+namespace CompanyManagment.App.Contracts.Employer;
+
+///
+/// اطلاعات کارفرمای حقوقی
+///
+public class GetRealEmployerDetailViewModel
+{
+ ///
+ /// آیدی کارفرما
+ ///
+ public long Id { get; set; }
+
+ ///
+ /// نام و نام خانوادگی
+ ///
+ public string FullName { get; set; }
+
+ ///
+ /// نام
+ ///
+ public string FName{ get; set; }
+
+ ///
+ /// نام خانوادگی
+ ///
+ public string LName { get; set; }
+
+ ///
+ /// کدملی
+ ///
+ public string NationalCode { get; set; }
+
+ ///
+ /// جنسیت فارسی
+ ///
+ public string GenderStr { get; set; }
+
+ ///
+ /// جنسیت
+ ///
+ public Gender Gender { get; set; }
+
+ ///
+ /// ملیت
+ ///
+ public string Nationality { get; set; }
+
+ ///
+ /// شماره تلفن همراه
+ ///
+ public string PhoneNumber { get; set; }
+
+ ///
+ /// نام پدر
+ ///
+ public string FatherName { get; set; }
+
+ ///
+ /// شماره شناسنامه
+ ///
+ public string IdNumber { get; set; }
+
+ ///
+ /// تاریخ تولد
+ ///
+ public string DateOfBirth { get; set; }
+
+ ///
+ /// نام طرف حساب
+ ///
+ public string ContractingPartyName { get; set; }
+
+
+ ///
+ /// آیدی طرف حساب
+ ///
+ public long ContractingPartyId { get; set; }
+
+ ///
+ /// کد کارفرما
+ ///
+ public string EmployerNo { get; set; }
+
+
+ ///
+ /// شماره تلفن ثابت
+ ///
+ public string TelephoneNumber { get; set; }
+
+ ///
+ /// تاریخ صدور شناسنامه
+ ///
+ public string DateOfIssue { get; set; }
+
+ ///
+ /// محل صدور شناسنامه
+ ///
+ public string PlaceOfIssue { get; set; }
+
+ ///
+ /// اطلاعات سامانه های دولتی
+ ///
+ public GovernmentSystemInfo GovernmentSystemInfo { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Employer/GovernmentSystemInfo.cs b/CompanyManagment.App.Contracts/Employer/GovernmentSystemInfo.cs
new file mode 100644
index 00000000..611ccb16
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Employer/GovernmentSystemInfo.cs
@@ -0,0 +1,54 @@
+using System;
+
+namespace CompanyManagment.App.Contracts.Employer;
+
+///
+/// اطلاعات سامانه های دولتی
+///
+public class GovernmentSystemInfo
+{
+ #region MCL
+ ///
+ /// نام کاربری اداره کار
+ ///
+ public string MclUsername { get; set; }
+ ///
+ /// رمز عبور اداره کار
+ ///
+ public string MclPassword { get; set; }
+ #endregion
+
+ #region E-Service تامین اجتماعی
+ ///
+ /// نام کاربری سازمان تامین اجتماعی
+ ///
+ public string EServiceUsername { get; set; }
+ ///
+ /// رمز عبور سازمان تامین اجتماعی
+ ///
+ public string EServicePassword { get; set; }
+ #endregion
+
+ #region Tax سامانه مالیاتی
+ ///
+ /// نام کاربری سامانه مالیاتی
+ ///
+ public string TaxUsername { get; set; }
+ ///
+ /// رمز عبور سامانه مالیاتی
+ ///
+ public string TaxPassword { get; set; }
+ #endregion
+
+ #region Sana سامانه ثنا
+ ///
+ /// نام کاربری ثنا
+ ///
+ public string SanaUsername { get; set; }
+ ///
+ /// رمز عبور ثنا
+ ///
+ public string SanaPassword { get; set; }
+ #endregion
+
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Employer/IEmployerApplication.cs b/CompanyManagment.App.Contracts/Employer/IEmployerApplication.cs
index ec8582f1..86c5c41f 100644
--- a/CompanyManagment.App.Contracts/Employer/IEmployerApplication.cs
+++ b/CompanyManagment.App.Contracts/Employer/IEmployerApplication.cs
@@ -2,6 +2,7 @@
using System.Threading.Tasks;
using _0_Framework.Application;
using CompanyManagment.App.Contracts.Checkout;
+using CompanyManagment.App.Contracts.Employee;
namespace CompanyManagment.App.Contracts.Employer;
@@ -19,7 +20,7 @@ public interface IEmployerApplication
OperationResult Active(long id);
OperationResult DeActive(long id);
- OperationResult Remove(long id);
+ OperationResult Remove_Old(long id);
List GetEmployers();
List Search(EmployerSearchModel searchModel);
@@ -36,7 +37,13 @@ public interface IEmployerApplication
#region Mahan
List GetEmployersHasWorkshop();
- Task> GetSelectList(string search);
+
+ ///
+ /// لیست نام کارفرما ها برای جستجو
+ ///
+ ///
+ ///
+ Task> GetSelectList(string search);
#endregion
#region NewByHeydari
@@ -53,6 +60,68 @@ public interface IEmployerApplication
(string employerName, bool isLegal) InsuranceEmployerByWorkshopId(long workshopId);
+
+
+ #endregion
+ #region Api
+ ///
+ /// لیست کارفرما ها
+ ///
+ ///
+ Task> GetEmployerList(GetEmployerSearchModel searchModel);
+
+ ///
+ /// جزئیات کارفرما حقوقی
+ ///
+ ///
+ ///
+ Task GetLegalEmployerDetail(long id);
+
+ ///
+ /// جزئیات کارفرما حقیقی
+ ///
+ ///
+ ///
+ Task GetRealEmployerDetail(long id);
+
+ ///
+ /// ایجاد کارفرمای حقیقی
+ ///
+ ///
+ ///
+ Task CreateReal(CreateRealEmployer command);
+
+ ///
+ /// ایجاد کارفرمای حقوقی
+ ///
+ ///
+ ///
+ Task CreateLegal(CreateLegalEmployer command);
+
+ ///
+ /// ویرایش کارفرمای حقیقی
+ ///
+ ///
+ ///
+ Task EditReal(EditRealEmployer command);
+
+
+ ///
+ /// ویرایش کارفرمای حقوقی
+ ///
+ ///
+ ///
+ Task EditLegal(EditLegalEmployer command);
+
+
+
+ ///
+ /// حذف کارفرما - درصورت داشتن کارگاه کارفرما غیرفعال میشود
+ ///
+ ///
+ ///
+ public Task> Remove(long id);
+
#endregion
}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/FinancialStatment/IFinancialStatmentApplication.cs b/CompanyManagment.App.Contracts/FinancialStatment/IFinancialStatmentApplication.cs
index d2ac6498..45e18826 100644
--- a/CompanyManagment.App.Contracts/FinancialStatment/IFinancialStatmentApplication.cs
+++ b/CompanyManagment.App.Contracts/FinancialStatment/IFinancialStatmentApplication.cs
@@ -4,6 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using _0_Framework.Application;
+using CompanyManagment.App.Contracts.FinancilTransaction;
namespace CompanyManagment.App.Contracts.FinancialStatment;
@@ -13,4 +14,123 @@ public interface IFinancialStatmentApplication
List Search(FinancialStatmentSearchModel searchModel);
FinancialStatmentViewModel GetDetailsByContractingPartyId(long contractingPartyId);
-}
\ No newline at end of file
+
+ ///
+ /// نمایش اطلاعات صورت حساب مالی کلاینت
+ ///
+ ///
+ ///
+ /// مدل صورت حساب مالی کلاینت
+ Task GetClientFinancialStatement(ClientFinancialStatementSearchModel searchModel,
+ long accountId);
+}
+
+public class ClientFinancialStatementSearchModel
+{
+ ///
+ /// از تاریخ
+ ///
+ public string FromDate { get; set; }
+ ///
+ /// تا تاریخ
+ ///
+ public string ToDate { get; set; }
+ ///
+ /// از مبلغ
+ ///
+ public double FromAmount { get; set; }
+ ///
+ /// تا مبلغ
+ ///
+ public double ToAmount { get; set; }
+ ///
+ /// نوع عملیات تراکنش
+ ///
+ public FinancialTransactionType? Type { get; set; }
+
+ ///
+ /// صفحه بندی
+ ///
+ public int PageIndex { get; set; }
+
+}
+
+public enum FinancialTransactionType
+{
+ ///
+ /// ایجاد درآمد
+ ///
+ Debt,
+ ///
+ /// دریافت درآمد
+ ///
+ Credit
+}
+
+public class ClientFinancialStatementViewModel
+{
+ ///
+ /// آیدی FinancialStatement
+ ///
+ public long Id { get; set; }
+
+ ///
+ /// جمع بدهکاری
+ ///
+ public double TotalDebt { get; set; }
+ ///
+ /// جمع بستانکاری
+ ///
+ public double TotalCredit { get; set; }
+ ///
+ /// مبلغ قابل پرداخت
+ ///
+ public double TotalAmountPayable { get; set; }
+
+ ///
+ /// تراکنش ها
+ ///
+ public List Transactions { get; set; }
+}
+
+public class ClientFinancialTransactionViewModel
+{
+ ///
+ /// زمان و تاریخ میلادی
+ ///
+ public DateTime DateTimeGr { get; set; }
+ ///
+ /// تاریخ
+ ///
+ public string DateFa { get; set; }
+ ///
+ /// زمان
+ ///
+ public string TimeFa { get; set; }
+ ///
+ /// شرح
+ ///
+ public string Description { get; set; }
+ ///
+ /// نوع عملیات پرداخت
+ ///
+ public FinancialTransactionType Type { get; set; }
+
+ ///
+ /// نوع عملیات پرداخت به صورت استرینگ
+ ///
+ public string TypeStr { get; set; }
+ ///
+ /// بدهکار
+ ///
+ public double Debtor { get; set; }
+ ///
+ /// بستانکار
+ ///
+ public double Creditor { get; set; }
+ ///
+ /// باقی مانده
+ ///
+ public double Balance { get; set; }
+}
+
diff --git a/CompanyManagment.App.Contracts/PaymentTransaction/CreatePaymentTransaction.cs b/CompanyManagment.App.Contracts/PaymentTransaction/CreatePaymentTransaction.cs
new file mode 100644
index 00000000..6c1e41fd
--- /dev/null
+++ b/CompanyManagment.App.Contracts/PaymentTransaction/CreatePaymentTransaction.cs
@@ -0,0 +1,54 @@
+namespace CompanyManagment.App.Contracts.PaymentTransaction;
+
+public class CreatePaymentTransaction
+{
+ ///
+ /// شناسه طرف قرارداد
+ ///
+ public long ContractingPartyId { get; set; }
+
+ ///
+ /// نام صاحب حساب بانکی
+ ///
+ public string BankAccountHolderName { get; set; }
+
+ ///
+ /// نام بانک
+ ///
+ public string BankName { get; set; }
+
+ ///
+ /// شماره کارت
+ ///
+ public string CardNumber { get; set; }
+
+ ///
+ /// شماره شبا
+ ///
+ public string ShebaNumber { get; set; }
+
+ ///
+ /// شماره حساب بانکی
+ ///
+ public string AccountNumber { get; set; }
+
+ ///
+ /// وضعیت تراکنش پرداخت
+ ///
+ public PaymentTransactionStatus Status { get; set; }
+
+ ///
+ /// مبلغ تراکنش
+ ///
+ public double Amount { get; set; }
+
+ ///
+ /// شناسه یکتای تراکنش
+ ///
+ public string TransactionId { get; set; }
+
+ ///
+ /// نام طرف حساب
+ ///
+ public string ContractingPartyName { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/PaymentTransaction/GetPaymentTransactionListSearchModel.cs b/CompanyManagment.App.Contracts/PaymentTransaction/GetPaymentTransactionListSearchModel.cs
new file mode 100644
index 00000000..6b6f6c56
--- /dev/null
+++ b/CompanyManagment.App.Contracts/PaymentTransaction/GetPaymentTransactionListSearchModel.cs
@@ -0,0 +1,43 @@
+namespace CompanyManagment.App.Contracts.PaymentTransaction;
+
+///
+/// مدل جستجو برای دریافت لیست تراکنشهای پرداخت.
+/// شامل فیلترهایی مانند نام طرف قرارداد یا صاحب حساب، بازه تاریخ، بازه مبلغ و وضعیت تراکنش.
+///
+public class GetPaymentTransactionListSearchModel
+{
+ ///
+ /// نام طرف قرارداد یا صاحب حساب بانکی جهت جستجو
+ ///
+ public string ContractingPartyOrAccountHolderName { get; set; }
+
+ ///
+ /// تاریخ شروع بازه جستجو (به صورت رشته)
+ ///
+ public string FromDate { get; set; }
+
+ ///
+ /// تاریخ پایان بازه جستجو (به صورت رشته)
+ ///
+ public string ToDate { get; set; }
+
+ ///
+ /// حداقل مبلغ تراکنش جهت جستجو
+ ///
+ public double FromAmount { get; set; }
+
+ ///
+ /// حداکثر مبلغ تراکنش جهت جستجو
+ ///
+ public double ToAmount { get; set; }
+
+ ///
+ /// وضعیت تراکنش جهت فیلتر کردن نتایج
+ ///
+ public PaymentTransactionStatus? StatusEnum { get; set; }
+
+ ///
+ /// شماره صفحه برای پیادهسازی pagination
+ ///
+ public int PageIndex { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/PaymentTransaction/GetPaymentTransactionListViewModel.cs b/CompanyManagment.App.Contracts/PaymentTransaction/GetPaymentTransactionListViewModel.cs
new file mode 100644
index 00000000..d8bb9e4e
--- /dev/null
+++ b/CompanyManagment.App.Contracts/PaymentTransaction/GetPaymentTransactionListViewModel.cs
@@ -0,0 +1,73 @@
+namespace CompanyManagment.App.Contracts.PaymentTransaction;
+
+///
+/// مدل نمایش اطلاعات هر تراکنش پرداخت در لیست تراکنشها.
+/// شامل جزئیاتی مانند تاریخ و زمان پرداخت، نام طرف حساب، اطلاعات بانکی، وضعیت و مبلغ تراکنش.
+///
+public class GetPaymentTransactionListViewModel
+{
+ ///
+ /// آیدی تراکنش پرداخت
+ ///
+ public long Id { get; set; }
+
+ ///
+ /// تاریخ پرداخت
+ ///
+ public string PaymentDate { get; set; }
+
+ ///
+ /// زمان پرداخت
+ ///
+ public string PaymentTime { get; set; }
+
+ ///
+ /// نام طرف حساب
+ ///
+ public string ContractingPartyName { get; set; }
+
+ ///
+ /// نام صاحب حساب بانکی
+ ///
+ public string BankAccountHolderName { get; set; }
+
+ ///
+ /// نام بانک
+ ///
+ public string BankName { get; set; }
+
+ ///
+ /// شماره کارت
+ ///
+ public string CardNumber { get; set; }
+
+ ///
+ /// شماره شبا
+ ///
+ public string ShebaNumber { get; set; }
+
+ ///
+ /// شماره حساب بانکی
+ ///
+ public string AccountNumber { get; set; }
+
+ ///
+ /// وضعیت تراکنش به صورت متنی
+ ///
+ public string Status { get; set; }
+
+ ///
+ /// وضعیت تراکنش به صورت Enum
+ ///
+ public PaymentTransactionStatus StatusEnum { get; set; }
+
+ ///
+ /// مبلغ تراکنش
+ ///
+ public double Amount { get; set; }
+
+ ///
+ /// شناسه یکتای تراکنش
+ ///
+ public string TransactionId { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/PaymentTransaction/IPaymentTransactionApplication.cs b/CompanyManagment.App.Contracts/PaymentTransaction/IPaymentTransactionApplication.cs
new file mode 100644
index 00000000..b871b1a7
--- /dev/null
+++ b/CompanyManagment.App.Contracts/PaymentTransaction/IPaymentTransactionApplication.cs
@@ -0,0 +1,30 @@
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+using _0_Framework.Application;
+using _0_Framework.Application.PaymentGateway;
+
+namespace CompanyManagment.App.Contracts.PaymentTransaction;
+
+///
+///
+///
+public interface IPaymentTransactionApplication
+{
+ ///
+ /// لیست تراکنش های پرداخت را بر اساس فیلتر مشخص شده برمی گرداند.
+ ///
+ ///
+ ///
+ Task> GetPaymentTransactionList(
+ GetPaymentTransactionListSearchModel searchModel);
+ ///
+ /// ایجاد تراکنش
+ ///
+ ///
+ ///
+ Task Create(CreatePaymentTransaction command);
+
+ Task GetWalletAmount(CancellationToken cancellationToken);
+
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/PaymentTransaction/PaymentTransactionStatus.cs b/CompanyManagment.App.Contracts/PaymentTransaction/PaymentTransactionStatus.cs
new file mode 100644
index 00000000..d49ac4c5
--- /dev/null
+++ b/CompanyManagment.App.Contracts/PaymentTransaction/PaymentTransactionStatus.cs
@@ -0,0 +1,17 @@
+namespace CompanyManagment.App.Contracts.PaymentTransaction;
+
+///
+/// وضعیت تراکنش درگاه پرداخت
+///
+public enum PaymentTransactionStatus
+{
+ ///
+ /// تراکنش با شکست مواجه شد.
+ ///
+ Failed,
+ ///
+ /// تراکنش با موفقیت انجام شد.
+ ///
+ Success,
+
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/PersonalContractingParty/ContractingPartyGetListSearchModel.cs b/CompanyManagment.App.Contracts/PersonalContractingParty/ContractingPartyGetListSearchModel.cs
new file mode 100644
index 00000000..fd2f7f9a
--- /dev/null
+++ b/CompanyManagment.App.Contracts/PersonalContractingParty/ContractingPartyGetListSearchModel.cs
@@ -0,0 +1,37 @@
+using _0_Framework.Application.Enums;
+
+namespace CompanyManagment.App.Contracts.PersonalContractingParty;
+
+public class ContractingPartyGetListSearchModel
+{
+ ///
+ /// تعدادی که برای لیست بعدی آیتم باید رد کنه
+ ///
+ public int PageIndex { get; set; }
+
+ ///
+ /// نام شرکت یا نام و نام خانوادگی طرف حساب
+ ///
+ public string FullNameOrCompanyName { get; set; }
+
+ ///
+ /// شناسه ملی یا شماره ملی
+ ///
+ public string NationalIdOrNationalCode { get; set; }
+
+ ///
+ /// نام معرف
+ ///
+ public string RepresentativeName { get; set; }
+
+ ///
+ /// نوع طرف حساب
+ ///
+ public LegalType ContractingPartyType { get; set; }
+
+ ///
+ /// وضعیت طرف حساب
+ ///
+ public ActivationStatus ContractingPartyStatus { get; set; }
+
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/PersonalContractingParty/ContractingPartyGetListViewModel.cs b/CompanyManagment.App.Contracts/PersonalContractingParty/ContractingPartyGetListViewModel.cs
new file mode 100644
index 00000000..ab435f57
--- /dev/null
+++ b/CompanyManagment.App.Contracts/PersonalContractingParty/ContractingPartyGetListViewModel.cs
@@ -0,0 +1,60 @@
+using System.Collections.Generic;
+using _0_Framework.Application.Enums;
+
+namespace CompanyManagment.App.Contracts.PersonalContractingParty;
+
+public record ContractingPartyGetListEmployerViewModel(long EmployerId, string EmployerName);
+
+public class ContractingPartyGetListViewModel
+{
+ ///
+ /// آیدی طرف حساب
+ ///
+ public long Id { get; set; }
+
+ ///
+ /// کد طرف حساب
+ ///
+ public int ArchiveCode { get; set; }
+
+ ///
+ /// شناسه ملی یا شماره ملی
+ ///
+ public string NationalIdOrNationalCode { get; set; }
+
+ ///
+ /// نام طرف حساب
+ ///
+ public string ContractingPartyName { get; set; }
+
+ ///
+ /// لیست کارفرما ها
+ ///
+ public ICollection Employers { get; set; }
+
+ ///
+ /// تعداد بلاک
+ ///
+ public int BlockTimes { get; set; }
+
+ ///
+ /// آیا بلاک هست
+ ///
+ public bool IsBlock { get; set; }
+
+ ///
+ /// آیا دارای قرارداد مالی است
+ ///
+ public bool HasInstitutionContract { get; set; }
+
+ ///
+ /// نوع طرف حساب
+ ///
+ public LegalType ContractingPartyType { get; set; }
+
+ ///
+ /// وضعیت طرف حساب
+ ///
+ public ActivationStatus Status { get; set; }
+
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/PersonalContractingParty/ContractingPartySelectListViewModel.cs b/CompanyManagment.App.Contracts/PersonalContractingParty/ContractingPartySelectListViewModel.cs
new file mode 100644
index 00000000..29186b6b
--- /dev/null
+++ b/CompanyManagment.App.Contracts/PersonalContractingParty/ContractingPartySelectListViewModel.cs
@@ -0,0 +1,8 @@
+using _0_Framework.Application;
+
+namespace CompanyManagment.App.Contracts.PersonalContractingParty;
+
+public class ContractingPartySelectListViewModel: SelectListViewModel
+{
+
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/PersonalContractingParty/CreateLegalContractingParty.cs b/CompanyManagment.App.Contracts/PersonalContractingParty/CreateLegalContractingParty.cs
new file mode 100644
index 00000000..996070fc
--- /dev/null
+++ b/CompanyManagment.App.Contracts/PersonalContractingParty/CreateLegalContractingParty.cs
@@ -0,0 +1,74 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace CompanyManagment.App.Contracts.PersonalContractingParty;
+
+public class CreateLegalContractingParty
+{
+ ///
+ /// آیدی معرف
+ ///
+ [Required]
+ public long RepresentativeId { get; set; }
+
+ ///
+ /// نام شرکت
+ ///
+ [Required]
+ public string CompanyName { get; set; }
+
+ ///
+ /// شناسه ملی
+ ///
+ [Required]
+ public string NationalId { get; set; }
+
+ ///
+ /// کد طرف حساب
+ ///
+ [Required]
+ public int ArchiveCode { get; set; }
+
+ ///
+ /// نام مستعار
+ ///
+ public string SureName { get; set; }
+
+ ///
+ /// شماره ثبت
+ ///
+ public string RegisterId { get; set; }
+
+
+
+ ///
+ /// شماره تلفن
+ ///
+ public string PhoneNumber { get; set; }
+
+ ///
+ /// شماره تلفن نماینده
+ ///
+ public string AgentPhone { get; set; }
+
+ ///
+ /// استان
+ ///
+ public string State { get; set; }
+
+ ///
+ /// شهر
+ ///
+ public string City { get; set; }
+
+ ///
+ /// محله
+ ///
+ public string Zone { get; set; }
+
+ ///
+ /// نشانی
+ ///
+ public string Address { get; set; }
+
+
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/PersonalContractingParty/CreateRealContractingParty.cs b/CompanyManagment.App.Contracts/PersonalContractingParty/CreateRealContractingParty.cs
new file mode 100644
index 00000000..e35fe25c
--- /dev/null
+++ b/CompanyManagment.App.Contracts/PersonalContractingParty/CreateRealContractingParty.cs
@@ -0,0 +1,77 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace CompanyManagment.App.Contracts.PersonalContractingParty;
+
+public class CreateRealContractingParty
+{
+ ///
+ /// نام
+ ///
+ [Required]
+ public string FName { get; set; }
+
+ ///
+ /// نام خانوادگی
+ ///
+ [Required]
+ public string LName { get; set; }
+
+ ///
+ /// آیدی معرف
+ ///
+ [Required]
+ public long RepresentativeId { get; set; }
+
+ ///
+ /// کد ملی
+ ///
+ [Required]
+ public string NationalCode { get; set; }
+
+ ///
+ /// شماره شناسنامه
+ ///
+ [Required]
+ public string IdNumber { get; set; }
+
+ ///
+ /// کد طرف حساب
+ ///
+ [Required]
+ public int ArchiveCode { get; set; }
+
+ ///
+ /// نام مستعار
+ ///
+ public string SureName { get; set; }
+
+ ///
+ /// شماره تلفن
+ ///
+ public string PhoneNumber { get; set; }
+
+ ///
+ /// شماره تلفن نماینده
+ ///
+ public string AgentPhone { get; set; }
+
+ ///
+ /// استان
+ ///
+ public string State { get; set; }
+
+ ///
+ /// شهر
+ ///
+ public string City { get; set; }
+
+ ///
+ /// محله
+ ///
+ public string Zone { get; set; }
+
+ ///
+ /// نشانی
+ ///
+ public string Address { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/PersonalContractingParty/EditLegalContractingParty.cs b/CompanyManagment.App.Contracts/PersonalContractingParty/EditLegalContractingParty.cs
new file mode 100644
index 00000000..a55c28da
--- /dev/null
+++ b/CompanyManagment.App.Contracts/PersonalContractingParty/EditLegalContractingParty.cs
@@ -0,0 +1,12 @@
+namespace CompanyManagment.App.Contracts.PersonalContractingParty;
+
+///
+/// ویرایش طرف حساب حقوقی
+///
+public class EditLegalContractingParty:CreateLegalContractingParty
+{
+ ///
+ /// آیدی طرف حساب
+ ///
+ public long Id { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/PersonalContractingParty/EditRealContractingParty.cs b/CompanyManagment.App.Contracts/PersonalContractingParty/EditRealContractingParty.cs
new file mode 100644
index 00000000..04150cc5
--- /dev/null
+++ b/CompanyManagment.App.Contracts/PersonalContractingParty/EditRealContractingParty.cs
@@ -0,0 +1,13 @@
+namespace CompanyManagment.App.Contracts.PersonalContractingParty;
+
+///
+/// ویرایش طرف حساب حقیقی
+///
+public class EditRealContractingParty:CreateRealContractingParty
+{
+ ///
+ /// آیدی طرف حساب
+ ///
+ public long Id { get; set; }
+
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/PersonalContractingParty/GetContractingPartyNationalCodeOrNationalIdViewModel.cs b/CompanyManagment.App.Contracts/PersonalContractingParty/GetContractingPartyNationalCodeOrNationalIdViewModel.cs
new file mode 100644
index 00000000..5258c58a
--- /dev/null
+++ b/CompanyManagment.App.Contracts/PersonalContractingParty/GetContractingPartyNationalCodeOrNationalIdViewModel.cs
@@ -0,0 +1,12 @@
+namespace CompanyManagment.App.Contracts.PersonalContractingParty;
+
+///
+/// شماره ملی یا شناسه ملی بر اساس حقیقی یا حقوقی بودن
+///
+public class GetContractingPartyNationalCodeOrNationalIdViewModel
+{
+ ///
+ /// شماره ملی یا شناسه ملی
+ ///
+ public string NationalCodeOrNationalId { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/PersonalContractingParty/GetLegalContractingPartyDetailsViewModel.cs b/CompanyManagment.App.Contracts/PersonalContractingParty/GetLegalContractingPartyDetailsViewModel.cs
new file mode 100644
index 00000000..787ffec5
--- /dev/null
+++ b/CompanyManagment.App.Contracts/PersonalContractingParty/GetLegalContractingPartyDetailsViewModel.cs
@@ -0,0 +1,83 @@
+namespace CompanyManagment.App.Contracts.PersonalContractingParty;
+
+///
+/// ویو مدل جزئیات طرف حساب حقوقی
+///
+public class GetLegalContractingPartyDetailsViewModel
+{
+ ///
+ /// آیدی طرف حساب
+ ///
+ public long Id { get; set; }
+
+ ///
+ /// نام کامل شرکت(به همراه نام مستعار)ء
+ ///
+ public string CompanyFullName { get; set; }
+
+ ///
+ /// نام شرکت (بدون نام مستعار)ء
+ ///
+ public string CompanyName { get; set; }
+
+ ///
+ /// نام مستعار
+ ///
+ public string SureName { get; set; }
+
+ ///
+ /// شماره ثبت
+ ///
+ public string RegisterId { get; set; }
+
+ ///
+ /// شماره ملی
+ ///
+ public string NationalId { get; set; }
+
+ ///
+ /// شماره تماس
+ ///
+ public string PhoneNumber { get; set; }
+
+ ///
+ /// شماره تماس نماینده
+ ///
+ public string AgentPhone { get; set; }
+
+ ///
+ /// آدرس
+ ///
+ public string Address { get; set; }
+
+ ///
+ /// معرف
+ ///
+ public string RepresentativeName { get; set; }
+
+ ///
+ /// آیدی معرف
+ ///
+ public long RepresentativeId { get; set; }
+
+ ///
+ /// کد طرف حساب
+ ///
+ public int ArchiveCode { get; set; }
+
+ ///
+ /// استان
+ ///
+ public string State { get; set; }
+
+ ///
+ /// شهر
+ ///
+ public string City { get; set; }
+
+ ///
+ /// محله
+ ///
+ public string Zone { get; set; }
+
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/PersonalContractingParty/GetRealContractingPartyDetailsViewModel.cs b/CompanyManagment.App.Contracts/PersonalContractingParty/GetRealContractingPartyDetailsViewModel.cs
new file mode 100644
index 00000000..165871a6
--- /dev/null
+++ b/CompanyManagment.App.Contracts/PersonalContractingParty/GetRealContractingPartyDetailsViewModel.cs
@@ -0,0 +1,94 @@
+using System.Runtime.CompilerServices;
+using Microsoft.AspNetCore.Builder;
+
+namespace CompanyManagment.App.Contracts.PersonalContractingParty;
+
+///
+/// ویو مدل جزئیات طرف حساب حقیقی
+///
+public class GetRealContractingPartyDetailsViewModel
+{
+ ///
+ /// آیدی طرف حساب
+ ///
+ public long Id { get; set; }
+
+ ///
+ /// نام
+ ///
+ public string FName { get; set; }
+
+ ///
+ /// نام خانوادگی
+ ///
+ public string LName { get; set; }
+
+ ///
+ /// نام و نام خانوادگی
+ ///
+ public string FullName { get; set; }
+
+ ///
+ /// کد ملی
+ ///
+ public string NationalCode { get; set; }
+
+ ///
+ /// شماره شناسنامه
+ ///
+ public string IdNumber { get; set; }
+
+ ///
+ /// شماره تلفن
+ ///
+ public string PhoneNumber { get; set; }
+
+ ///
+ /// شماره تلفن نماینده
+ ///
+ public string AgentPhone { get; set; }
+
+ ///
+ /// آدرس
+ ///
+ public string Address { get; set; }
+
+
+ ///
+ /// نام معرف
+ ///
+ public string RepresentativeName { get; set; }
+
+ ///
+ /// آیدی معرف
+ ///
+ public long RepresentativeId { get; set; }
+
+ ///
+ /// نام مستعار
+ ///
+ public string SureName { get; set; }
+
+ ///
+ /// کد طرف حساب
+ ///
+ public int ArchiveCode { get; set; }
+
+
+ ///
+ /// استان
+ ///
+ public string State { get; set; }
+
+ ///
+ /// شهر
+ ///
+ public string City { get; set; }
+
+ ///
+ /// محله
+ ///
+ public string Zone { get; set; }
+
+
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/PersonalContractingParty/IPersonalContractingPartyApp.cs b/CompanyManagment.App.Contracts/PersonalContractingParty/IPersonalContractingPartyApp.cs
index b3303f0a..cfa0bc11 100644
--- a/CompanyManagment.App.Contracts/PersonalContractingParty/IPersonalContractingPartyApp.cs
+++ b/CompanyManagment.App.Contracts/PersonalContractingParty/IPersonalContractingPartyApp.cs
@@ -1,5 +1,6 @@
using _0_Framework.Application;
using System.Collections.Generic;
+using System.Threading.Tasks;
namespace CompanyManagment.App.Contracts.PersonalContractingParty;
@@ -54,4 +55,79 @@ public interface IPersonalContractingPartyApp
#endregion
+
+ #region Api
+ ///
+ /// لیست طرف حساب ها
+ ///
+ ///
+ ///
+ Task> GetList(ContractingPartyGetListSearchModel searchModel);
+
+ ///
+ /// لیست طرف حساب برای سلکت لیست سرچ
+ ///
+ ///
+ Task> GetSelectList();
+
+ ///
+ /// ایجاد طرف حساب حقیقی
+ ///
+ ///
+ ///
+ Task CreateReal(CreateRealContractingParty command);
+
+ ///
+ /// ایجاد ظرف حساب حقوقی
+ ///
+ ///
+ ///
+ Task CreateLegal(CreateLegalContractingParty command);
+
+
+ ///
+ /// لیستی از شماره ملی یا شناسه ملی بر اساس حقیقی یا حقوقی بودن
+ ///
+ ///
+ Task> GetNationalCodeOrNationalId();
+
+
+ ///
+ /// حذف طرف حساب. در صورتی که طرف حساب دارای قرارداد مالی یا دارای کارفرما باشد غیرفعال میشود
+ ///
+ ///
+ ///
+ Task> Delete(long id);
+
+ ///
+ /// ویرایش طرف حساب حقیقی
+ ///
+ ///
+ ///
+ OperationResult EditRealApi(EditRealContractingParty command);
+
+
+ ///
+ /// ویرایش طرف حساب حقوقی
+ ///
+ ///
+ ///
+ OperationResult EditLegal(EditLegalContractingParty command);
+
+ ///
+ /// گرفتن جزئیات طرف حساب حقوقی
+ ///
+ ///
+ ///
+ Task GetRealDetails(long id);
+
+ ///
+ /// گرفتن جزئیات طرف حساب حقوقی
+ ///
+ ///
+ ///
+ Task GetLegalDetails(long id);
+
+ #endregion
+
}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/PersonalContractingParty/PersonalContractingPartyViewModel.cs b/CompanyManagment.App.Contracts/PersonalContractingParty/PersonalContractingPartyViewModel.cs
index c2e955b2..44cc96b2 100644
--- a/CompanyManagment.App.Contracts/PersonalContractingParty/PersonalContractingPartyViewModel.cs
+++ b/CompanyManagment.App.Contracts/PersonalContractingParty/PersonalContractingPartyViewModel.cs
@@ -47,4 +47,6 @@ public class PersonalContractingPartyViewModel
public bool IsAuthenticated { get; set; }
public List EmployerList { get; set; }
+
+
}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Representative/CreateLegalRepresentative.cs b/CompanyManagment.App.Contracts/Representative/CreateLegalRepresentative.cs
new file mode 100644
index 00000000..05bdfd2a
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Representative/CreateLegalRepresentative.cs
@@ -0,0 +1,46 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace CompanyManagment.App.Contracts.Representative;
+
+public class CreateLegalRepresentative
+{
+
+ ///
+ /// نام حقوقی
+ ///
+ [Required(ErrorMessage = "این مقدار نمی تواند خالی باشد")]
+ public string LegalName { get; set; }
+
+
+ ///
+ /// شناسه ثبت
+ ///
+ [RegularExpression("^[0-9]*$", ErrorMessage = "لطفا فقط عدد وارد کنید")]
+ public string RegisterId { get; set; }
+
+
+ ///
+ /// شناسه ملی
+ ///
+ [RegularExpression("[0-9]{11}", ErrorMessage = "لطفا فقط عدد 11 رقمی وارد کنید")]
+ public string NationalId { get; set; }
+
+
+ ///
+ /// شماره تلفن
+ ///
+ [DataType(DataType.PhoneNumber)]
+ [RegularExpression(@"^\(?([0-9]{4})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage = "لطفا شماره تلفن معتبر وارد کنید")]
+ public string Phone { get; set; }
+
+ ///
+ /// شماره تلفن نماینده
+ ///
+ [RegularExpression("^[0-9]*$", ErrorMessage = "لطفا فقط عدد وارد کنید")]
+ public string AgentPhone { get; set; }
+
+ ///
+ /// آدرس
+ ///
+ public string Address { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Representative/CreateRealRepresentative.cs b/CompanyManagment.App.Contracts/Representative/CreateRealRepresentative.cs
new file mode 100644
index 00000000..35967dab
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Representative/CreateRealRepresentative.cs
@@ -0,0 +1,54 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace CompanyManagment.App.Contracts.Representative;
+
+public class CreateRealRepresentative
+{
+
+
+ ///
+ /// نام کوچک
+ ///
+ [Required(ErrorMessage = "این مقدار نمی تواند خالی باشد")]
+ public string FName { get; set; }
+
+ ///
+ /// نام خانوادگی
+ ///
+ [Required(ErrorMessage = "این مقدار نمی تواند خالی باشد")]
+ public string LName { get; set; }
+
+
+ ///
+ /// کد ملی
+ ///
+ [RegularExpression("^[0-9]*$", ErrorMessage = "لطفا فقط عدد وارد کنید")]
+ public string Nationalcode { get; set; }
+
+
+ ///
+ /// شماره شناسنامه
+ ///
+ [MaxLength(12)]
+ [MinLength(1)]
+ [RegularExpression("^[0-9]*$", ErrorMessage = "لطفا فقط عدد وارد کنید")]
+ public string IdNumber { get; set; }
+
+
+ ///
+ /// شماره تلفن
+ ///
+ [DataType(DataType.PhoneNumber)]
+ [RegularExpression(@"^\(?([0-9]{4})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage = "لطفا شماره تلفن معتبر وارد کنید")]
+ public string Phone { get; set; }
+
+
+ [RegularExpression("^[0-9]*$", ErrorMessage = "لطفا فقط عدد وارد کنید")]
+ public string AgentPhone { get; set; }
+
+ ///
+ /// آدرس
+ ///
+ public string Address { get; set; }
+
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Representative/EditLegalRepresentative.cs b/CompanyManagment.App.Contracts/Representative/EditLegalRepresentative.cs
new file mode 100644
index 00000000..36e9198f
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Representative/EditLegalRepresentative.cs
@@ -0,0 +1,6 @@
+namespace CompanyManagment.App.Contracts.Representative;
+
+public class EditLegalRepresentative : CreateLegalRepresentative
+{
+ public long Id { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Representative/EditRealRepresentative.cs b/CompanyManagment.App.Contracts/Representative/EditRealRepresentative.cs
new file mode 100644
index 00000000..0ee00e20
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Representative/EditRealRepresentative.cs
@@ -0,0 +1,6 @@
+namespace CompanyManagment.App.Contracts.Representative;
+
+public class EditRealRepresentative : CreateRealRepresentative
+{
+ public long Id { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Representative/GetSelectListRepresentativeViewModel.cs b/CompanyManagment.App.Contracts/Representative/GetSelectListRepresentativeViewModel.cs
new file mode 100644
index 00000000..5129d8d0
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Representative/GetSelectListRepresentativeViewModel.cs
@@ -0,0 +1,17 @@
+namespace CompanyManagment.App.Contracts.Representative;
+
+///
+/// ویو مدل سلکت لیست برای معرف
+///
+public class GetSelectListRepresentativeViewModel
+{
+ ///
+ /// آیدی
+ ///
+ public long Id { get; set; }
+
+ ///
+ /// نام معرف
+ ///
+ public string Name { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Representative/IRepresentativeApplication.cs b/CompanyManagment.App.Contracts/Representative/IRepresentativeApplication.cs
index 7c751c5d..ece54ff7 100644
--- a/CompanyManagment.App.Contracts/Representative/IRepresentativeApplication.cs
+++ b/CompanyManagment.App.Contracts/Representative/IRepresentativeApplication.cs
@@ -24,8 +24,27 @@ public interface IRepresentativeApplication
OperationResult DeleteRepresentative(long id);
OperationResult Active(long id);
OperationResult DeActive(long id);
- #endregion
+ #endregion
+ #region Api
+
+ Task> GetList(RepresentativeGetListSearchModel searchModel);
+
+ bool HasAnyContractingParty(long id);
+
+
+ OperationResult CreateReal(CreateRealRepresentative command);
+ OperationResult CreateLegal(CreateLegalRepresentative command);
+ OperationResult EditReal(EditRealRepresentative command);
+ OperationResult EditLegal(EditLegalRepresentative command);
+
+ ///
+ /// لیست نام های معرف برای سلکت لیست
+ ///
+ ///
+ Task> GetSelectList();
+
+ #endregion
}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Representative/RepresentativeGetListSearchModel.cs b/CompanyManagment.App.Contracts/Representative/RepresentativeGetListSearchModel.cs
new file mode 100644
index 00000000..f3ce1dba
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Representative/RepresentativeGetListSearchModel.cs
@@ -0,0 +1,41 @@
+using _0_Framework.Application.Enums;
+
+namespace CompanyManagment.App.Contracts.Representative;
+
+public class RepresentativeGetListSearchModel
+{
+
+ public int PageIndex { get; set; }
+
+ ///
+ /// نام شرکت یا نام و نام خانوادگی
+ ///
+ public string CompanyNameOrFullName { get; set; }
+
+ ///
+ /// شناسه ملی یا کدملی
+ ///
+ public string NationalCodeOrNationalId { get; set; }
+
+ ///
+ /// شماره شناسنامه
+ ///
+ public string IdNumber { get; set; }
+
+ ///
+ /// آیدی طرف حساب
+ ///
+ public long ContractingPartyId { get; set; }
+
+ ///
+ /// نوع معرف
+ ///
+ public LegalType RepresentativeType { get; set; }
+
+
+ ///
+ /// وضعیت معرف
+ ///
+ public ActivationStatus RepresentativeStatus { get; set; }
+
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/Representative/RepresentativeGetListViewModel.cs b/CompanyManagment.App.Contracts/Representative/RepresentativeGetListViewModel.cs
new file mode 100644
index 00000000..2fed51e0
--- /dev/null
+++ b/CompanyManagment.App.Contracts/Representative/RepresentativeGetListViewModel.cs
@@ -0,0 +1,29 @@
+using _0_Framework.Application.Enums;
+
+namespace CompanyManagment.App.Contracts.Representative;
+
+public class RepresentativeGetListViewModel
+{
+ ///
+ /// آیدی معرف
+ ///
+ public long Id { get; set; }
+
+ ///
+ /// نام حقیقی یا نام حقوقی
+ ///
+ public string RealNameOrLegalName { get; set; }
+
+ ///
+ /// کدملی یا شناسه ملی
+ ///
+ public string NationalIdOrNationalCode { get; set; }
+
+ ///
+ /// آیا این معرف طرف حسابی دارد؟
+ ///
+ public bool HasAnyContractingParty { get; set; }
+
+ public ActivationStatus RepresentativeStatus { get; set; }
+ public LegalType RepresentativeType { get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/TemporaryClientRegistration/ITemporaryClientRegistrationApplication.cs b/CompanyManagment.App.Contracts/TemporaryClientRegistration/ITemporaryClientRegistrationApplication.cs
index 17ed2570..6de66312 100644
--- a/CompanyManagment.App.Contracts/TemporaryClientRegistration/ITemporaryClientRegistrationApplication.cs
+++ b/CompanyManagment.App.Contracts/TemporaryClientRegistration/ITemporaryClientRegistrationApplication.cs
@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using System.Threading.Tasks;
using _0_Framework.Application;
using CompanyManagment.App.Contracts.InstitutionPlan;
@@ -38,7 +39,7 @@ public interface ITemporaryClientRegistrationApplication
///
///
///
- Task CreateOrUpdateWorkshopTemp(List command);
+ Task CreateOrUpdateWorkshopTemp(List command, long contractingPartyTempId);
///
/// دریافت جمع کل خدمات برای یک کارگاه
@@ -55,14 +56,14 @@ public interface ITemporaryClientRegistrationApplication
///
///
Task GetTotalPaymentAndWorkshopList(long contractingPartyTempId,
- string periodModel = "12", string paymentModel = "OneTime");
+ string periodModel = "12", string paymentModel = "OneTime", string contractStartType = "currentMonth");
///
/// ایجاد یا ویرایش قرارداد موقت
///
///
///
- Task CreateOrUpdateInstitutionContractTemp(long contractingPartyTempId, string periodModel, string paymentModel, double totalPayment, double valueAddedTax);
+ Task CreateOrUpdateInstitutionContractTemp(long contractingPartyTempId, string periodModel, string paymentModel, double totalPayment, double valueAddedTax, DateTime contractStart);
///
/// دریافت کد برای کلاینت
@@ -92,4 +93,11 @@ public interface ITemporaryClientRegistrationApplication
///
///
Task PayOffCompleted(long contractingPartyTempId);
+
+ ///
+ /// دریافت لیست طرف حساب هایی که ثبت نام آنها تکمیل شده
+ /// جهت نمایش در کارپوشه
+ ///
+ ///
+ Task> RegistrationWorkflowMainList();
}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/TemporaryClientRegistration/MonthlyInstallment.cs b/CompanyManagment.App.Contracts/TemporaryClientRegistration/MonthlyInstallment.cs
new file mode 100644
index 00000000..efa53d67
--- /dev/null
+++ b/CompanyManagment.App.Contracts/TemporaryClientRegistration/MonthlyInstallment.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CompanyManagment.App.Contracts.TemporaryClientRegistration;
+
+public class MonthlyInstallment
+{
+ ///
+ /// مبلغ قسط ماهانه
+ ///
+ public string InstallmentAmountStr { get; set; }
+
+ ///
+ /// تاریخ قسط ماهانه
+ ///
+ public string InstalmentDate { get; set; }
+
+ ///
+ /// شمارنده قسط
+ ///
+ public string InstallmentCounter{ get; set; }
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/TemporaryClientRegistration/RegistrationWorkflowMainList.cs b/CompanyManagment.App.Contracts/TemporaryClientRegistration/RegistrationWorkflowMainList.cs
new file mode 100644
index 00000000..773a3130
--- /dev/null
+++ b/CompanyManagment.App.Contracts/TemporaryClientRegistration/RegistrationWorkflowMainList.cs
@@ -0,0 +1,21 @@
+namespace CompanyManagment.App.Contracts.TemporaryClientRegistration;
+
+public class RegistrationWorkflowMainList
+{
+ ///
+ /// آی دی طرف حساب ثبت شده موقت
+ ///
+ public long ContractingPartyTempId { get; set; }
+
+
+ ///
+ /// نام کامل طرف حساب
+ ///
+ public string ContractingPartyFullName { get; set; }
+
+ ///
+ /// شماره همراه
+ ///
+ public string Phone { get; set; }
+
+}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/TemporaryClientRegistration/ReviewAndPaymentViewModel.cs b/CompanyManagment.App.Contracts/TemporaryClientRegistration/ReviewAndPaymentViewModel.cs
index bc2478b3..10912190 100644
--- a/CompanyManagment.App.Contracts/TemporaryClientRegistration/ReviewAndPaymentViewModel.cs
+++ b/CompanyManagment.App.Contracts/TemporaryClientRegistration/ReviewAndPaymentViewModel.cs
@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
namespace CompanyManagment.App.Contracts.TemporaryClientRegistration;
@@ -23,28 +24,54 @@ public class ReviewAndPaymentViewModel
/// مبلغ پرداخت بدون مالیات
/// Double
///
- public double WithoutTaxPaymentDouble { get; set; }
+ public double OneTimeWithoutTaxPaymentDouble { get; set; }
///
/// مبلغ پرداخت بدون مالیات
/// string
///
- public string WithoutTaxPaymentStr { get; set; }
+ public string OneTimeWithoutTaxPaymentStr { get; set; }
///
/// مبلغ پرداخت کامل
/// Double
///
- public double TotalPaymentDouble { get; set; }
+ public double OneTimeTotalPaymentDouble { get; set; }
///
/// مبلغ پرداخت کامل
/// string
///
- public string TotalPaymentStr { get; set; }
+ public string OneTimeTotalPaymentStr { get; set; }
+
+ ///
+ /// مبلغ پرداخت بدون مالیات
+ /// Double
+ ///
+ public double MonthlyWithoutTaxPaymentDouble { get; set; }
+
+ ///
+ /// مبلغ پرداخت بدون مالیات
+ /// string
+ ///
+ public string MonthlyWithoutTaxPaymentStr { get; set; }
+
+
+ ///
+ /// مبلغ پرداخت کامل
+ /// Double
+ ///
+ public double MonthlyTotalPaymentDouble { get; set; }
+
+ ///
+ /// مبلغ پرداخت کامل
+ /// string
+ ///
+ public string MonthlyTotalPaymentStr { get; set; }
+
///
/// مالیات بر ارزش افزوده
/// Double
@@ -83,4 +110,52 @@ public class ReviewAndPaymentViewModel
/// آی دی طرف حساب
///
public long ContractingPartTempId { get; set; }
+
+ ///
+ /// لیست اقساط ماهیانه
+ ///
+ public List MonthlyInstallments { get; set; }
+
+
+ ///
+ /// تاریخ شروع قرارداد در اول ماه جاری
+ /// -
+ /// شمسی
+ ///
+ public string ContractStartCurrentMonthFa { get; set; }
+
+ ///
+ /// تاریخ شروع قرارداد در اول ماه جاری
+ /// -
+ /// میلادی
+ ///
+ public DateTime ContractStartCurrentMonthGr { get; set; }
+
+ ///
+ /// تاریخ شروع قرارداد در اول ماه بعد
+ /// -
+ /// شمسی
+ ///
+ public string ContractStartNextMonthFa{ get; set; }
+
+ ///
+ /// تاریخ شروع قرارداد در اول ماه بعد
+ /// -
+ /// میلادی
+ ///
+ public DateTime ContractStartNextMonthGr { get; set; }
+
+ ///
+ /// تاریخ پایان قرارداد
+ /// -
+ /// میلادی
+ ///
+ public DateTime ContractEndGr { get; set; }
+
+ ///
+ /// تاریخ پایان قرارداد
+ /// -
+ /// شمسی
+ ///
+ public string ContractEndFa { get; set; }
}
\ No newline at end of file
diff --git a/CompanyManagment.Application/ContactUsApplication.cs b/CompanyManagment.Application/ContactUsApplication.cs
new file mode 100644
index 00000000..d1912132
--- /dev/null
+++ b/CompanyManagment.Application/ContactUsApplication.cs
@@ -0,0 +1,70 @@
+using System.Text.RegularExpressions;
+using _0_Framework.Application;
+using Company.Domain.ContactUsAgg;
+using CompanyManagment.App.Contracts.ContactUs;
+
+namespace CompanyManagment.Application;
+
+public class ContactUsApplication : IContactUsApplication
+{
+ private readonly IContactUsRepository _contactUsRepository;
+
+ public ContactUsApplication(IContactUsRepository contactUsRepository)
+ {
+ _contactUsRepository = contactUsRepository;
+ }
+
+ public OperationResult Create(CreateContactUs command)
+ {
+ var op = new OperationResult();
+ if (string.IsNullOrWhiteSpace(command.FirstName))
+ {
+ return op.Failed("لطفا نام خود را وارد کنید");
+ }
+
+ if (string.IsNullOrWhiteSpace(command.LastName))
+ {
+ return op.Failed("لطفا نام خانوادگی خود را وارد کنید");
+ }
+
+ if (string.IsNullOrWhiteSpace(command.Email))
+ {
+ return op.Failed("لطفا ایمیل خود را وارد کنید");
+ }
+
+ if (string.IsNullOrWhiteSpace(command.PhoneNumber))
+ {
+ return op.Failed("لطفا شماره تماس خود را وارد کنید");
+ }
+
+ if (!Regex.IsMatch(command.PhoneNumber, @"^(\+98|0)?9\d{9}$"))
+ {
+ return op.Failed("شماره تماس وارد شده نامعتبر است");
+ }
+
+ if (!Regex.IsMatch(command.Email, @"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$"))
+ {
+ return op.Failed("ایمیل وارد شده نامعتبر است");
+ }
+
+ if (string.IsNullOrWhiteSpace(command.Title))
+ {
+ return op.Failed("لطفا عنوان پیغام خود را وارد کنید");
+ }
+
+ if (string.IsNullOrWhiteSpace(command.Message))
+ {
+ return op.Failed("لطفا پیغام خود را وارد کنید");
+ }
+
+ var entity = new ContactUs(command.FirstName, command.LastName, command.Email, command.PhoneNumber,
+ command.Title, command.Message);
+
+ _contactUsRepository.Create(entity);
+
+ _contactUsRepository.SaveChanges();
+
+ return op.Succcedded();
+
+ }
+}
\ No newline at end of file
diff --git a/CompanyManagment.Application/EmployeeAplication.cs b/CompanyManagment.Application/EmployeeAplication.cs
index 5842c8eb..acf86fe6 100644
--- a/CompanyManagment.Application/EmployeeAplication.cs
+++ b/CompanyManagment.Application/EmployeeAplication.cs
@@ -1660,5 +1660,19 @@ public class EmployeeAplication : RepositoryBase, IEmployeeAppli
}
- #endregion
+ #endregion
+
+ #region Api
+
+ public async Task> GetSelectList(string searchText)
+ {
+ return await _EmployeeRepository.GetSelectList(searchText);
+ }
+
+ public async Task> GetList(GetEmployeeListSearchModel searchModel)
+ {
+ return await _EmployeeRepository.GetList(searchModel);
+ }
+
+ #endregion
}
\ No newline at end of file
diff --git a/CompanyManagment.Application/EmployerApplication.cs b/CompanyManagment.Application/EmployerApplication.cs
index 3c6eb318..6b937dcd 100644
--- a/CompanyManagment.Application/EmployerApplication.cs
+++ b/CompanyManagment.Application/EmployerApplication.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using _0_Framework.Application;
+using _0_Framework.Exceptions;
using Company.Domain.empolyerAgg;
using Company.Domain.WorkshopAgg;
using CompanyManagment.App.Contracts.Checkout;
@@ -239,7 +240,7 @@ public class EmployerApplication : IEmployerApplication
return opration.Succcedded();
}
- public OperationResult Remove(long id)
+ public OperationResult Remove_Old(long id)
{
var opration = new OperationResult();
@@ -894,10 +895,10 @@ public class EmployerApplication : IEmployerApplication
return _EmployerRepository.GetEmployersHasWorkshop();
}
- public async Task> GetSelectList(string search)
- {
- return await _EmployerRepository.GetSelectList(search);
- }
+ //public async Task> GetSelectList(string search)
+ //{
+ // return await _EmployerRepository.GetSelectList(search);
+ //}
#endregion
#region NewByHeydari
@@ -957,4 +958,255 @@ public class EmployerApplication : IEmployerApplication
}
#endregion
+
+ #region Api
+ public async Task> GetEmployerList(GetEmployerSearchModel searchModel)
+ {
+ return await _EmployerRepository.GetEmployerList(searchModel);
+ }
+ public async Task GetLegalEmployerDetail(long id)
+ {
+ var employer = await _EmployerRepository.GetLegalEmployerDetail(id);
+ if (employer == null)
+ {
+ throw new NotFoundException("کارفرمای مورد نطر یافت نشد");
+ }
+ return employer;
+ }
+
+ public async Task GetRealEmployerDetail(long id)
+ {
+ var employer = await _EmployerRepository.GetRealEmployerDetail(id);
+ if (employer == null)
+ {
+ throw new NotFoundException("کارفرمای مورد نطر یافت نشد");
+ }
+ return employer;
+ }
+
+ public async Task CreateReal(CreateRealEmployer command)
+ {
+ var opration = new OperationResult();
+ if (_EmployerRepository.Exists(x =>
+ (x.FName == command.FName && x.LName == command.LName) && x.Nationalcode == command.NationalCode && x.Nationalcode != null))
+ return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد");
+
+ if (string.IsNullOrWhiteSpace(command.FName))
+ return opration.Failed("لطفا نام را وارد کنید");
+
+ if (!string.IsNullOrWhiteSpace(command.NationalCode))
+ {
+ if (command.NationalCode.NationalCodeValid() != "valid")
+ {
+ return opration.Failed("کدملی وارد شده نامعتبر است");
+ }
+ if (_EmployerRepository.Exists(x => x.Nationalcode == command.NationalCode && !string.IsNullOrWhiteSpace(command.NationalCode)))
+ {
+ return opration.Failed("کد ملی وارد شده تکراری است");
+ }
+ }
+ string initial = "1300/10/11";
+ var dateOfBirth = command.DateOfBirth?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime();
+ var dateOfIssue = command.DateOfIssue?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime();
+
+ var gender = command.Gender switch
+ {
+ Gender.Male => "مرد",
+ Gender.Female => "زن",
+ Gender.None => null,
+ _ => throw new BadRequestException("جنسیت وارد شده نامعتبر است")
+ };
+
+ var employerData = new Employer(command.FName, command.LName, command.ContractingPartyId, gender,
+ command.NationalCode, command.IdNumber, "ایرانی", command.FatherName, dateOfBirth,
+ dateOfIssue, command.PlaceOfIssue, "*", "*", "*", "حقیقی", command.PhoneNumber,
+ command.Telephone, "true", command.GovernmentSystemInfo.MclUsername, command.GovernmentSystemInfo.MclPassword, command.GovernmentSystemInfo.EServiceUsername, command.GovernmentSystemInfo.EServicePassword,
+ command.GovernmentSystemInfo.TaxUsername, command.GovernmentSystemInfo.TaxPassword, command.GovernmentSystemInfo.SanaUsername, command.GovernmentSystemInfo.SanaPassword);
+
+ await _EmployerRepository.CreateAsync(employerData);
+ await _EmployerRepository.SaveChangesAsync();
+
+ return opration.Succcedded();
+ }
+
+ public async Task CreateLegal(CreateLegalEmployer command)
+ {
+ if (string.IsNullOrWhiteSpace(command.EmployerLName))
+ command.EmployerLName = "#";
+ var opration = new OperationResult();
+ if (_EmployerRepository.Exists(x =>
+ x.LName == command.CompanyName && x.NationalId == command.NationalId && x.EmployerLName == command.EmployerLName))
+ return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد");
+
+ if (_EmployerRepository.Exists(x => x.NationalId == command.NationalId && !string.IsNullOrWhiteSpace(command.NationalId) && x.NationalId != null))
+ {
+ return opration.Failed(" شناسه ملی وارد شده تکراری است");
+ }
+ if (_EmployerRepository.Exists(x => x.LName == command.CompanyName))
+ {
+ return opration.Failed("نام شرکت وارد شده تکراری است");
+ }
+ if (_EmployerRepository.Exists(x => x.RegisterId == command.RegisterId && !string.IsNullOrWhiteSpace(command.RegisterId) && x.RegisterId != null))
+ {
+ return opration.Failed(" شماره ثبت وارد شده تکراری است");
+ }
+
+ if (!string.IsNullOrEmpty(command.NationalId) && command.NationalId.Length != 11)
+ {
+ return opration.Failed(" شناسه ملی باید 11 رقم باشد");
+ }
+
+ if (!string.IsNullOrWhiteSpace(command.EmployerNationalCode))
+ {
+ if (command.EmployerNationalCode.NationalCodeValid() != "valid")
+ {
+ return opration.Failed("کد ملی وارد شده نا معتبر است");
+ }
+ }
+
+ string initial = "1300/10/11";
+ var dateOfBirth = command.EmployerDateOfBirth?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime();
+ var dateOfIssue = command.EmployerDateOfIssue?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime();
+
+ var gender = command.EmployerGender switch
+ {
+ Gender.Male => "مرد",
+ Gender.Female => "زن",
+ Gender.None => null,
+ _ => throw new BadRequestException("جنسیت وارد شده نامعتبر است")
+ };
+
+
+ var legalEmployerData = new Employer(command.EmployerFName, command.CompanyName, command.ContractingPartyId, gender,
+ command.EmployerNationalCode, command.EmployerIdNumber, "ایرانی", command.EmployerFatherName, dateOfBirth,
+ dateOfIssue, command.EmployerPlaceOfIssue, command.RegisterId, command.NationalId, command.EmployerLName, "حقوقی", command.PhoneNumber,
+ command.TelephoneNumber, "true", command.GovernmentSystemInfo.MclUsername, command.GovernmentSystemInfo.MclPassword,
+ command.GovernmentSystemInfo.EServiceUsername, command.GovernmentSystemInfo.EServicePassword,
+ command.GovernmentSystemInfo.TaxUsername, command.GovernmentSystemInfo.TaxPassword, command.GovernmentSystemInfo.SanaUsername, command.GovernmentSystemInfo.SanaPassword);
+
+ await _EmployerRepository.CreateAsync(legalEmployerData);
+ await _EmployerRepository.SaveChangesAsync();
+
+ return opration.Succcedded();
+ }
+
+ public async Task EditReal(EditRealEmployer command)
+ {
+ var opration = new OperationResult();
+ var employer = _EmployerRepository.Get(command.Id);
+ if (employer == null)
+ return opration.Failed("رکورد مورد نظر یافت نشد");
+
+ if (_EmployerRepository.Exists(x =>
+ (x.FName == command.FName && x.LName == command.LName) && x.Nationalcode == command.NationalCode && x.id != command.Id))
+ return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد");
+ if (!string.IsNullOrWhiteSpace(command.NationalCode))
+ {
+ if (command.NationalCode.NationalCodeValid() != "valid")
+ {
+ return opration.Failed("کد ملی وارد شده نا معتبر است");
+ }
+ }
+
+ if (_EmployerRepository.Exists(x => x.Nationalcode == command.NationalCode && !string.IsNullOrWhiteSpace(command.NationalCode) && x.id != command.Id))
+ {
+
+ return opration.Failed(" کد ملی وارد شده تکراری است");
+ }
+
+
+
+ string initial = "1300/10/11";
+
+ var dateOfBirth = command.DateOfBirth?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime();
+ var dateOfIssue = command.DateOfIssue?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime();
+
+ var gender = command.Gender switch
+ {
+ Gender.Male => "مرد",
+ Gender.Female => "زن",
+ Gender.None => null,
+ _ => throw new BadRequestException("جنسیت وارد شده نامعتبر است")
+ };
+
+ employer.Edit(command.FName, command.LName, command.ContractingPartyId,
+ gender, command.NationalCode, command.IdNumber, "ایرانی", command.FatherName,
+ dateOfBirth, dateOfIssue, command.PlaceOfIssue, command.PhoneNumber, command.Telephone,
+ command.GovernmentSystemInfo.MclUsername, command.GovernmentSystemInfo.MclPassword, command.GovernmentSystemInfo.EServiceUsername, command.GovernmentSystemInfo.EServicePassword,
+ command.GovernmentSystemInfo.TaxUsername, command.GovernmentSystemInfo.TaxPassword, command.GovernmentSystemInfo.SanaUsername, command.GovernmentSystemInfo.SanaPassword, null);
+
+ await _EmployerRepository.SaveChangesAsync();
+ return opration.Succcedded();
+ }
+
+ public async Task EditLegal(EditLegalEmployer command)
+ {
+ var opration = new OperationResult();
+ var legalEmployer = _EmployerRepository.Get(command.Id);
+ if (legalEmployer == null)
+ return opration.Failed("رکورد مورد نظر یافت نشد");
+
+ if (_EmployerRepository.Exists(x =>
+ x.LName == command.CompanyName && x.NationalId == command.NationalId && !string.IsNullOrWhiteSpace(command.NationalId) && x.id != command.Id))
+ return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد");
+
+
+ if (!string.IsNullOrEmpty(command.NationalId) && command.NationalId.Length != 11)
+ {
+ return opration.Failed(" شناسه ملی باید 11 رقم باشد");
+ }
+
+ if (!string.IsNullOrWhiteSpace(command.EmployerNationalCode))
+ {
+ if (command.EmployerNationalCode.NationalCodeValid() != "valid")
+ {
+ return opration.Failed("کد ملی وارد شده نا معتبر است");
+ }
+ }
+
+ var gender = command.EmployerGender switch
+ {
+ Gender.Male => "مرد",
+ Gender.Female => "زن",
+ Gender.None => null,
+ _ => throw new BadRequestException("جنسیت وارد شده نامعتبر است")
+ };
+
+ string initial = "1300/10/11";
+ var dateOfBirth = command.EmployerDateOfBirth?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime();
+ var dateOfIssue = command.EmployerDateOfIssue?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime();
+ legalEmployer.EditLegal(command.EmployerFName, command.CompanyName, command.ContractingPartyId, gender,
+ command.EmployerNationalCode, command.EmployerIdNumber, "ایرانی", command.EmployerFatherName, dateOfBirth,
+ dateOfIssue, command.EmployerPlaceOfIssue, command.RegisterId, command.NationalId, command.EmployerLName,
+ command.PhoneNumber, command.TelephoneNumber, command.GovernmentSystemInfo.MclUsername, command.GovernmentSystemInfo.MclUsername, command.GovernmentSystemInfo.EServiceUsername, command.GovernmentSystemInfo.EServicePassword,
+ command.GovernmentSystemInfo.TaxUsername, command.GovernmentSystemInfo.TaxPassword, command.GovernmentSystemInfo.SanaUsername, command.GovernmentSystemInfo.SanaPassword, null);
+
+ await _EmployerRepository.SaveChangesAsync();
+ return opration.Succcedded();
+ }
+
+ public async Task> GetSelectList(string search)
+ {
+ return await _EmployerRepository.GetSelectList(search);
+ }
+
+ async Task> IEmployerApplication.Remove(long id)
+ {
+ var employer = _EmployerRepository.Get(id);
+ if (employer == null)
+ throw new NotFoundException("دیتای مورد نظر یافت نشد");
+
+ var workshops = _workshopRepository.GetWorkshopsByEmployerId([id]);
+
+ if (workshops.Any())
+ {
+ return await _EmployerRepository.DeactivateWithSubordinates(id);
+ }
+
+ _EmployerRepository.Remove(id);
+
+ return new OperationResult().Succcedded("Deleted");
+
+ }
+ #endregion
}
\ No newline at end of file
diff --git a/CompanyManagment.Application/FinancialStatmentApplication.cs b/CompanyManagment.Application/FinancialStatmentApplication.cs
index a4ee6c50..283c1091 100644
--- a/CompanyManagment.Application/FinancialStatmentApplication.cs
+++ b/CompanyManagment.Application/FinancialStatmentApplication.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.Threading.Tasks;
using _0_Framework.Application;
using Company.Domain.FinancialStatmentAgg;
using CompanyManagment.App.Contracts.FinancialStatment;
@@ -110,4 +111,10 @@ public class FinancialStatmentApplication : IFinancialStatmentApplication
{
return _financialStatmentRepository.GetDetailsByContractingPartyId(contractingPartyId);
}
+
+ public async Task GetClientFinancialStatement(
+ ClientFinancialStatementSearchModel searchModel, long accountId)
+ {
+ return await _financialStatmentRepository.GetClientFinancialStatement(accountId, searchModel);
+ }
}
\ No newline at end of file
diff --git a/CompanyManagment.Application/PaymentTransactionApplication.cs b/CompanyManagment.Application/PaymentTransactionApplication.cs
new file mode 100644
index 00000000..5bd3d695
--- /dev/null
+++ b/CompanyManagment.Application/PaymentTransactionApplication.cs
@@ -0,0 +1,57 @@
+using System.Collections.Generic;
+using System.Net.Http;
+using System.Reflection;
+using System.Threading;
+using System.Threading.Tasks;
+using _0_Framework.Application;
+using _0_Framework.Application.PaymentGateway;
+using Company.Domain.PaymentTransactionAgg;
+using CompanyManagment.App.Contracts.PaymentTransaction;
+
+namespace CompanyManagment.Application;
+
+public class PaymentTransactionApplication : IPaymentTransactionApplication
+{
+ private readonly IPaymentTransactionRepository _paymentTransactionRepository;
+ private readonly IPaymentGateway _paymentGateway;
+
+ public PaymentTransactionApplication(IPaymentTransactionRepository paymentTransactionRepository,IHttpClientFactory httpClientFactory)
+ {
+ _paymentTransactionRepository = paymentTransactionRepository;
+ _paymentGateway = new AqayePardakhtPaymentGateway(httpClientFactory);
+ }
+
+ public async Task> GetPaymentTransactionList(
+ GetPaymentTransactionListSearchModel searchModel)
+ {
+ return await _paymentTransactionRepository.GetPaymentTransactionList(searchModel);
+ }
+
+ public async Task Create(CreatePaymentTransaction command)
+ {
+ var operationResult = new OperationResult();
+ var entity = new PaymentTransaction(
+ command.ContractingPartyId,
+ command.BankAccountHolderName,
+ command.BankName,
+ command.CardNumber,
+ command.ShebaNumber,
+ command.AccountNumber,
+ command.Status,
+ command.Amount,
+ command.TransactionId,
+ command.ContractingPartyName);
+
+ await _paymentTransactionRepository.CreateAsync(entity);
+ await _paymentTransactionRepository.SaveChangesAsync();
+ return operationResult.Succcedded();
+ }
+
+
+
+ public async Task GetWalletAmount(CancellationToken cancellationToken)
+ {
+ var result = await _paymentGateway.GetWalletAmount(cancellationToken);
+ return result;
+ }
+}
\ No newline at end of file
diff --git a/CompanyManagment.Application/PersonalContractingPartyApplication.cs b/CompanyManagment.Application/PersonalContractingPartyApplication.cs
index df060edf..d44162ff 100644
--- a/CompanyManagment.Application/PersonalContractingPartyApplication.cs
+++ b/CompanyManagment.Application/PersonalContractingPartyApplication.cs
@@ -1,17 +1,19 @@
using System;
using System.Collections.Generic;
+using System.Threading.Tasks;
using _0_Framework.Application;
using CompanyManagment.App.Contracts.PersonalContractingParty;
using Company.Domain.ContarctingPartyAgg;
using Company.Domain.empolyerAgg;
using CompanyManagment.App.Contracts.Representative;
using Company.Domain.InstitutionContractAgg;
+using CompanyManagment.EFCore.Repository;
namespace CompanyManagment.Application;
public class PersonalContractingPartyApplication : IPersonalContractingPartyApp
{
- private readonly IPersonalContractingPartyRepository _personalContractingPartyRepository2;
+ private readonly IPersonalContractingPartyRepository _personalContractingPartyRepository;
private readonly IRepresentativeApplication _representativeApplication;
private readonly IEmployerRepository _employerRepository;
private readonly IInstitutionContractRepository _institutionContractRepository;
@@ -26,7 +28,7 @@ public class PersonalContractingPartyApplication : IPersonalContractingPartyApp
public PersonalContractingPartyApplication(
IPersonalContractingPartyRepository personalContractingPartyRepository, IRepresentativeApplication representativeApplication, IEmployerRepository employerRepository, IInstitutionContractRepository institutionContractRepository)
{
- _personalContractingPartyRepository2 = personalContractingPartyRepository;
+ _personalContractingPartyRepository = personalContractingPartyRepository;
_representativeApplication = representativeApplication;
_employerRepository = employerRepository;
_institutionContractRepository = institutionContractRepository;
@@ -36,7 +38,7 @@ public class PersonalContractingPartyApplication : IPersonalContractingPartyApp
public OperationResult Create(CreatePersonalContractingParty command)
{
var opration = new OperationResult();
- if (_personalContractingPartyRepository2.Exists(x =>
+ if (_personalContractingPartyRepository.Exists(x =>
x.LName == command.LName && x.Nationalcode == command.Nationalcode && x.SureName == command.SureName ))
return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد");
if (command.RepresentativeId < 1)
@@ -54,14 +56,14 @@ public class PersonalContractingPartyApplication : IPersonalContractingPartyApp
// return opration.Failed("نام خانوادگی وارد شده تکراری است");
//}
- if (_personalContractingPartyRepository2.Exists(x => x.Nationalcode == command.Nationalcode && x.LName != command.LName))
+ if (_personalContractingPartyRepository.Exists(x => x.Nationalcode == command.Nationalcode && x.LName != command.LName))
{
nationalcodeIsOk = false;
return opration.Failed("کد ملی وارد شده تکراری است");
}
- if (_personalContractingPartyRepository2.Exists(x => x.ArchiveCode == command.ArchiveCode))
+ if (_personalContractingPartyRepository.Exists(x => x.ArchiveCode == command.ArchiveCode))
return opration.Failed("کد طرف حساب تکراری است");
try
@@ -132,8 +134,8 @@ public class PersonalContractingPartyApplication : IPersonalContractingPartyApp
command.State,command.City,command.Zone,command.SureName);
- _personalContractingPartyRepository2.Create(personalContractingParty);
- _personalContractingPartyRepository2.SaveChanges();
+ _personalContractingPartyRepository.Create(personalContractingParty);
+ _personalContractingPartyRepository.SaveChanges();
return opration.Succcedded();
@@ -152,13 +154,13 @@ public class PersonalContractingPartyApplication : IPersonalContractingPartyApp
public OperationResult Edit2(EditPersonalContractingParty command)
{
var opration = new OperationResult();
- var personalContractingParty = _personalContractingPartyRepository2.Get(command.Id);
+ var personalContractingParty = _personalContractingPartyRepository.Get(command.Id);
if (personalContractingParty == null)
return opration.Failed("رکورد مورد نظر یافت نشد");
personalContractingParty.Edit2(command.Address);
- _personalContractingPartyRepository2.SaveChanges();
+ _personalContractingPartyRepository.SaveChanges();
return opration.Succcedded();
}
@@ -166,7 +168,7 @@ public class PersonalContractingPartyApplication : IPersonalContractingPartyApp
{
var opration = new OperationResult();
- if (_personalContractingPartyRepository2.Exists(x =>
+ if (_personalContractingPartyRepository.Exists(x =>
x.LName == command.LName && x.RegisterId == command.RegisterId && x.SureName == command.SureName))
return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد");
if (command.RepresentativeId < 1)
@@ -174,23 +176,23 @@ public class PersonalContractingPartyApplication : IPersonalContractingPartyApp
- if (_personalContractingPartyRepository2.Exists(x => x.LName == command.LName && x.SureName == command.SureName))
+ if (_personalContractingPartyRepository.Exists(x => x.LName == command.LName && x.SureName == command.SureName))
{
legalNameIsOk = false;
return opration.Failed("نام شرکت وارد شده تکراری است");
}
- if (_personalContractingPartyRepository2.Exists(x => x.RegisterId == command.RegisterId && x.LName != command.LName))
+ if (_personalContractingPartyRepository.Exists(x => x.RegisterId == command.RegisterId && x.LName != command.LName))
{
registerIdIsOk = false;
return opration.Failed("شماره ثبت وارد شده تکراری است");
}
- if (_personalContractingPartyRepository2.Exists(x => x.NationalId == command.NationalId && x.LName != command.LName))
+ if (_personalContractingPartyRepository.Exists(x => x.NationalId == command.NationalId && x.LName != command.LName))
{
nationalIdIsOk = false;
return opration.Failed("شناسه ملی وارد شده تکراری است");
}
- if (_personalContractingPartyRepository2.Exists(x => x.ArchiveCode == command.ArchiveCode))
+ if (_personalContractingPartyRepository.Exists(x => x.ArchiveCode == command.ArchiveCode))
return opration.Failed("کد طرف حساب تکراری است");
@@ -204,8 +206,8 @@ public class PersonalContractingPartyApplication : IPersonalContractingPartyApp
command.State, command.City, command.Zone,command.SureName);
- _personalContractingPartyRepository2.Create(legalContractingParty);
- _personalContractingPartyRepository2.SaveChanges();
+ _personalContractingPartyRepository.Create(legalContractingParty);
+ _personalContractingPartyRepository.SaveChanges();
return opration.Succcedded();
@@ -223,15 +225,15 @@ public class PersonalContractingPartyApplication : IPersonalContractingPartyApp
{
var opration = new OperationResult();
- var personalContractingParty = _personalContractingPartyRepository2.Get(command.Id);
+ var personalContractingParty = _personalContractingPartyRepository.Get(command.Id);
if (personalContractingParty == null)
return opration.Failed("رکورد مورد نظر یافت نشد");
if (command.RepresentativeId < 1)
return opration.Failed("لطفا معرف را انتخاب کنید");
- if (_personalContractingPartyRepository2.Exists(x =>
+ if (_personalContractingPartyRepository.Exists(x =>
x.LName == command.LName && x.Nationalcode == command.Nationalcode && x.SureName == command.SureName && x.id != command.Id))
return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد");
- if (_personalContractingPartyRepository2.Exists(x => x.ArchiveCode == command.ArchiveCode && x.id != command.Id))
+ if (_personalContractingPartyRepository.Exists(x => x.ArchiveCode == command.ArchiveCode && x.id != command.Id))
return opration.Failed("کد طرف حساب تکراری است");
try
{
@@ -300,7 +302,7 @@ public class PersonalContractingPartyApplication : IPersonalContractingPartyApp
command.Phone, command.AgentPhone, command.Address, command.RepresentativeId, representative.FullName, command.ArchiveCode,
command.State, command.City, command.Zone,command.SureName);
- _personalContractingPartyRepository2.SaveChanges();
+ _personalContractingPartyRepository.SaveChanges();
return opration.Succcedded();
}
else
@@ -314,16 +316,16 @@ public class PersonalContractingPartyApplication : IPersonalContractingPartyApp
{
var opration = new OperationResult();
- var legalContractingParty = _personalContractingPartyRepository2.Get(command.Id);
+ var legalContractingParty = _personalContractingPartyRepository.Get(command.Id);
if (legalContractingParty == null)
return opration.Failed("رکورد مورد نظر یافت نشد");
- if (_personalContractingPartyRepository2.Exists(x =>
+ if (_personalContractingPartyRepository.Exists(x =>
x.LName== command.LName && x.RegisterId == command.RegisterId &&x.SureName == command.SureName &&x.id != command.Id))
return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد");
if (command.RepresentativeId < 1)
return opration.Failed("لطفا معرف را انتخاب کنید");
- if (_personalContractingPartyRepository2.Exists(x => x.ArchiveCode == command.ArchiveCode && x.id != command.Id))
+ if (_personalContractingPartyRepository.Exists(x => x.ArchiveCode == command.ArchiveCode && x.id != command.Id))
return opration.Failed("کد طرف حساب تکراری است");
var representative = _representativeApplication.GetDetails(command.RepresentativeId);
legalContractingParty.EditLegal(command.LName, command.RegisterId,
@@ -331,54 +333,54 @@ public class PersonalContractingPartyApplication : IPersonalContractingPartyApp
command.Phone, command.AgentPhone, command.Address, command.RepresentativeId, representative.FullName,command.ArchiveCode,
command.State, command.City, command.Zone, command.SureName);
- _personalContractingPartyRepository2.SaveChanges();
+ _personalContractingPartyRepository.SaveChanges();
return opration.Succcedded();
}
public EditPersonalContractingParty GetDetails(long id)
{
- return _personalContractingPartyRepository2.GetDetails(id);
+ return _personalContractingPartyRepository.GetDetails(id);
}
public string IsBlockByEmployerId(long employerId)
{
- return _personalContractingPartyRepository2.IsBlockByEmployerId(employerId);
+ return _personalContractingPartyRepository.IsBlockByEmployerId(employerId);
}
public EditPersonalContractingParty GetDetailsToEdit(long id)
{
- return _personalContractingPartyRepository2.GetDetailsToEdit(id);
+ return _personalContractingPartyRepository.GetDetailsToEdit(id);
}
public string GetFullName(long id)
{
- return _personalContractingPartyRepository2.GetFullName(id);
+ return _personalContractingPartyRepository.GetFullName(id);
}
public List GetPersonalContractingParties()
{
- return _personalContractingPartyRepository2.GetPersonalContractingParties();
+ return _personalContractingPartyRepository.GetPersonalContractingParties();
}
public List Search(PersonalContractingPartySearchModel searchModel2)
{
- return _personalContractingPartyRepository2.Search(searchModel2);
+ return _personalContractingPartyRepository.Search(searchModel2);
}
public int GetLastArchiveCode()
{
- return _personalContractingPartyRepository2.GetLastArchiveCode();
+ return _personalContractingPartyRepository.GetLastArchiveCode();
}
#region Mahan
public List SearchByName(string name)
{
- return _personalContractingPartyRepository2.SearchByName(name);
+ return _personalContractingPartyRepository.SearchByName(name);
}
#endregion
public ContractingPartyAndStatmentIdViewModel GetContractingpartyIdByAccountId(long accountId)
{
- return _personalContractingPartyRepository2.GetContractingpartyIdByAccountId(accountId);
+ return _personalContractingPartyRepository.GetContractingpartyIdByAccountId(accountId);
}
@@ -386,15 +388,15 @@ public class PersonalContractingPartyApplication : IPersonalContractingPartyApp
public List GetPersonalContractingPartiesForNationalcode(string searchText)
{
- return _personalContractingPartyRepository2.GetPersonalContractingPartiesForNationalcode(searchText);
+ return _personalContractingPartyRepository.GetPersonalContractingPartiesForNationalcode(searchText);
}
public List SearchForMain(PersonalContractingPartySearchModel searchModel2)
{
- var result= _personalContractingPartyRepository2.SearchForMain(searchModel2);
+ var result= _personalContractingPartyRepository.SearchForMain(searchModel2);
foreach (var item in result)
{
- item.HasInstitutionContract = _personalContractingPartyRepository2.GetHasContract(item.id);
+ item.HasInstitutionContract = _personalContractingPartyRepository.GetHasContract(item.id);
}
return result;
}
@@ -411,12 +413,12 @@ public class PersonalContractingPartyApplication : IPersonalContractingPartyApp
//اونهایی که کارفرما یا قرارداد غیر فعال دارند غیر فعال می شوند
if (_employerRepository.Exists(x => x.ContractingPartyId == id)|| _institutionContractRepository.Exists(x => x.ContractingPartyId == id))
{
- opration= _personalContractingPartyRepository2.DeActiveAll(id);
+ opration= _personalContractingPartyRepository.DeActiveAll(id);
return opration;
}
else
{
- opration = _personalContractingPartyRepository2.DeletePersonalContractingParties(id);
+ opration = _personalContractingPartyRepository.DeletePersonalContractingParties(id);
}
return opration;
@@ -428,10 +430,10 @@ public class PersonalContractingPartyApplication : IPersonalContractingPartyApp
{
var opration = new OperationResult();
- var contract = _personalContractingPartyRepository2.Get(id);
+ var contract = _personalContractingPartyRepository.Get(id);
if (contract == null)
return opration.Failed("رکورد مورد نظر یافت نشد");
- return _personalContractingPartyRepository2.ActiveAll(id);
+ return _personalContractingPartyRepository.ActiveAll(id);
//var opration = new OperationResult();
@@ -446,44 +448,44 @@ public class PersonalContractingPartyApplication : IPersonalContractingPartyApp
public OperationResult DeActive(long id)
{
var opration = new OperationResult();
- var personalContracting = _personalContractingPartyRepository2.Get(id);
+ var personalContracting = _personalContractingPartyRepository.Get(id);
if (personalContracting == null)
return opration.Failed("رکورد مورد نظر یافت نشد");
personalContracting.DeActive();
- _personalContractingPartyRepository2.SaveChanges();
+ _personalContractingPartyRepository.SaveChanges();
return opration.Succcedded();
}
public bool GetHasContract(long id)
{
- return _personalContractingPartyRepository2.GetHasContract(id);
+ return _personalContractingPartyRepository.GetHasContract(id);
}
public OperationResult Block(long id)
{
var opration = new OperationResult();
- var contract = _personalContractingPartyRepository2.Get(id);
+ var contract = _personalContractingPartyRepository.Get(id);
if (contract == null)
return opration.Failed("رکورد مورد نظر یافت نشد");
contract.Block();
- _personalContractingPartyRepository2.SaveChanges();
+ _personalContractingPartyRepository.SaveChanges();
return opration.Succcedded();
}
public OperationResult DisableBlock(long id)
{
var opration = new OperationResult();
- var personalContracting = _personalContractingPartyRepository2.Get(id);
+ var personalContracting = _personalContractingPartyRepository.Get(id);
if (personalContracting == null)
return opration.Failed("رکورد مورد نظر یافت نشد");
int blockTimes = personalContracting.BlockTimes + 1;
personalContracting.DisableBlock(blockTimes);
- _personalContractingPartyRepository2.SaveChanges();
+ _personalContractingPartyRepository.SaveChanges();
@@ -499,7 +501,225 @@ public class PersonalContractingPartyApplication : IPersonalContractingPartyApp
public bool IsBlockCheckByWorkshopId(long workshopId)
{
- return _personalContractingPartyRepository2.IsBlockCheckByWorkshopId(workshopId);
+ return _personalContractingPartyRepository.IsBlockCheckByWorkshopId(workshopId);
+ }
+
+
+
+ #endregion
+
+
+ #region Api
+
+
+ public async Task> GetList(
+ ContractingPartyGetListSearchModel searchModel)
+ {
+ return await _personalContractingPartyRepository.GetList(searchModel);
+ }
+
+ public async Task> GetSelectList()
+ {
+ return await _personalContractingPartyRepository.GetSelectList();
+ }
+ public async Task CreateReal(CreateRealContractingParty command)
+ {
+ var operation = new OperationResult();
+
+ if (_personalContractingPartyRepository.Exists(x =>
+ x.LName == command.LName && x.Nationalcode == command.NationalCode && x.SureName == command.SureName))
+ return operation.Failed("امکان ثبت رکورد تکراری وجود ندارد");
+
+ if (command.RepresentativeId < 1)
+ return operation.Failed("لطفا معرف را انتخاب کنید");
+
+ if (_personalContractingPartyRepository.Exists(x => x.Nationalcode == command.NationalCode && x.LName != command.LName))
+ {
+ nationalcodeIsOk = false;
+
+ return operation.Failed("کد ملی وارد شده تکراری است");
+ }
+
+
+ if (_personalContractingPartyRepository.Exists(x => x.ArchiveCode == command.ArchiveCode))
+ return operation.Failed("کد طرف حساب تکراری است");
+
+ if (command.NationalCode.NationalCodeValid() != "valid")
+ {
+ return operation.Failed("کد ملی وارد شده نا معتبر است");
+ }
+
+ var representative = _representativeApplication.GetDetails(command.RepresentativeId);
+ var personalContractingParty = new PersonalContractingParty(command.FName, command.LName,
+ command.NationalCode, command.IdNumber, "*", "*",
+ "حقیقی",
+ command.PhoneNumber, command.AgentPhone, command.Address, command.RepresentativeId, representative.FullName, command.ArchiveCode,
+ command.State, command.City, command.Zone, command.SureName);
+
+
+ await _personalContractingPartyRepository.CreateAsync(personalContractingParty);
+ await _personalContractingPartyRepository.SaveChangesAsync();
+
+ return operation.Succcedded();
+ }
+
+ public async Task CreateLegal(CreateLegalContractingParty command)
+ {
+ var opration = new OperationResult();
+
+ if (_personalContractingPartyRepository.Exists(x =>
+ x.LName == command.CompanyName && x.RegisterId == command.RegisterId && x.SureName == command.SureName))
+ return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد");
+
+ if (command.RepresentativeId < 1)
+ return opration.Failed("لطفا معرف را انتخاب کنید");
+
+ if (_personalContractingPartyRepository.Exists(x =>
+ x.LName == command.CompanyName && x.SureName == command.SureName))
+ {
+ legalNameIsOk = false;
+ return opration.Failed("نام شرکت وارد شده تکراری است");
+ }
+
+ if (_personalContractingPartyRepository.Exists(x =>
+ x.RegisterId == command.RegisterId && x.LName != command.CompanyName))
+ {
+ registerIdIsOk = false;
+ return opration.Failed("شماره ثبت وارد شده تکراری است");
+
+ }
+
+ if (_personalContractingPartyRepository.Exists(x =>
+ x.NationalId == command.NationalId && x.LName != command.CompanyName))
+ {
+ nationalIdIsOk = false;
+ return opration.Failed("شناسه ملی وارد شده تکراری است");
+ }
+
+ if (_personalContractingPartyRepository.Exists(x => x.ArchiveCode == command.ArchiveCode))
+ return opration.Failed("کد طرف حساب تکراری است");
+
+
+
+ var representative = _representativeApplication.GetDetails(command.RepresentativeId);
+ var legalContractingParty = new PersonalContractingParty("*", command.CompanyName,
+ "*", "*", command.RegisterId, command.NationalId,
+ "حقوقی",
+ command.PhoneNumber, command.AgentPhone, command.Address, command.RepresentativeId, representative.FullName,
+ command.ArchiveCode,
+ command.State, command.City, command.Zone, command.SureName);
+
+
+ await _personalContractingPartyRepository.CreateAsync(legalContractingParty);
+ await _personalContractingPartyRepository.SaveChangesAsync();
+
+ return opration.Succcedded();
+
+ }
+
+ public async Task> GetNationalCodeOrNationalId()
+ {
+ return await _personalContractingPartyRepository.GetNationalCodeOrNationalId();
+ }
+
+ public async Task> Delete(long id)
+ {
+ var operationResult = new OperationResult();
+
+ try
+ {
+ //اگر دارای قرارداد یا دازای کارفرما باشد غیر فعال می شود
+ if (_employerRepository.Exists(x => x.ContractingPartyId == id) || _institutionContractRepository.Exists(x => x.ContractingPartyId == id))
+ {
+ operationResult = await _personalContractingPartyRepository.DeactivateWithSubordinates(id);
+ return operationResult;
+ }
+
+ var entity = _personalContractingPartyRepository.Get(id);
+ _personalContractingPartyRepository.Remove(entity);
+ operationResult.Succcedded("Deleted");
+ }
+ catch
+ {
+ return operationResult.Failed("خطایی رخ داده است");
+ }
+
+ return operationResult;
+ }
+
+ public OperationResult EditRealApi(EditRealContractingParty command)
+ {
+ var opration = new OperationResult();
+ var personalContractingParty = _personalContractingPartyRepository.Get(command.Id);
+
+ if (personalContractingParty == null)
+ return opration.Failed("رکورد مورد نظر یافت نشد");
+
+ if (command.RepresentativeId < 1)
+ return opration.Failed("لطفا معرف را انتخاب کنید");
+
+ if (_personalContractingPartyRepository.Exists(x =>
+ x.LName == command.LName && x.Nationalcode == command.NationalCode && x.SureName == command.SureName && x.id != command.Id))
+ return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد");
+
+ if (_personalContractingPartyRepository.Exists(x => x.ArchiveCode == command.ArchiveCode && x.id != command.Id))
+ return opration.Failed("کد طرف حساب تکراری است");
+
+ if (command.NationalCode.NationalCodeValid() != "valid")
+ {
+ return opration.Failed("کد ملی وارد شده نا معتبر است");
+ }
+
+ try
+ {
+ var representative = _representativeApplication.GetDetails(command.RepresentativeId);
+ personalContractingParty.Edit(command.FName, command.LName,
+ command.NationalCode, command.IdNumber,
+ command.PhoneNumber, command.AgentPhone, command.Address, command.RepresentativeId, representative.FullName, command.ArchiveCode,
+ command.State, command.City, command.Zone, command.SureName);
+
+ _personalContractingPartyRepository.SaveChanges();
+ return opration.Succcedded();
+ }
+ catch
+ {
+
+ return opration.Failed("خطایی رخ داده است");
+ }
+ }
+
+ public OperationResult EditLegal(EditLegalContractingParty command)
+ {
+ var opration = new OperationResult();
+ var legalContractingParty = _personalContractingPartyRepository.Get(command.Id);
+ if (legalContractingParty == null)
+ return opration.Failed("رکورد مورد نظر یافت نشد");
+
+ if (_personalContractingPartyRepository.Exists(x =>
+ x.LName == command.CompanyName && x.RegisterId == command.RegisterId && x.SureName == command.SureName && x.id != command.Id))
+ return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد");
+ if (command.RepresentativeId < 1)
+ return opration.Failed("لطفا معرف را انتخاب کنید");
+ if (_personalContractingPartyRepository.Exists(x => x.ArchiveCode == command.ArchiveCode && x.id != command.Id))
+ return opration.Failed("کد طرف حساب تکراری است");
+ var representative = _representativeApplication.GetDetails(command.RepresentativeId);
+ legalContractingParty.EditLegal(command.CompanyName, command.RegisterId,
+ command.NationalId,
+ command.PhoneNumber, command.AgentPhone, command.Address, command.RepresentativeId, representative.FullName, command.ArchiveCode,
+ command.State, command.City, command.Zone, command.SureName);
+
+ _personalContractingPartyRepository.SaveChanges();
+ return opration.Succcedded();
+ }
+
+ public async Task GetRealDetails(long id)
+ {
+ return await _personalContractingPartyRepository.GetRealDetails(id);
+ }
+
+ public async Task GetLegalDetails(long id)
+ {
+ return await _personalContractingPartyRepository.GetLegalDetails(id);
}
#endregion
diff --git a/CompanyManagment.Application/RepresentativeApplication.cs b/CompanyManagment.Application/RepresentativeApplication.cs
index 78541931..a8bd4f0b 100644
--- a/CompanyManagment.Application/RepresentativeApplication.cs
+++ b/CompanyManagment.Application/RepresentativeApplication.cs
@@ -1,5 +1,7 @@
using System;
using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
using _0_Framework.Application;
using Company.Domain.RepresentativeAgg;
using CompanyManagment.App.Contracts.PersonalContractingParty;
@@ -350,5 +352,290 @@ public class RepresentativeApplication : IRepresentativeApplication
_representativeRepository.SaveChanges();
return opration.Succcedded();
}
- #endregion
+ #endregion
+
+ #region Api
+ public OperationResult CreateReal(CreateRealRepresentative command)
+ {
+ var nationalCode = string.Empty;
+ var op = new OperationResult();
+ if (_representativeRepository.Exists(x =>
+ x.LName == command.LName && x.Nationalcode == command.Nationalcode))
+ return op.Failed("امکان ثبت رکورد تکراری وجود ندارد");
+ if (_representativeRepository.Exists(x => x.LName == command.LName))
+ {
+
+
+ return op.Failed("نام خانوادگی وارد شده تکراری است");
+
+ }
+ if (_representativeRepository.Exists(x => x.Nationalcode == command.Nationalcode))
+ {
+
+
+ return op.Failed("کد ملی وارد شده تکراری است");
+ }
+
+ if (!string.IsNullOrWhiteSpace(command.Nationalcode))
+ {
+ if (_representativeRepository.Exists(x => x.Nationalcode == command.Nationalcode))
+ {
+
+
+ return op.Failed("کد ملی وارد شده تکراری است");
+ }
+ try
+ {
+
+
+ char[] chArray = command.Nationalcode.ToCharArray();
+ int[] numArray = new int[chArray.Length];
+ var cunt = chArray.Length;
+ for (int i = 0; i < chArray.Length; i++)
+ {
+ numArray[i] = (int)char.GetNumericValue(chArray[i]);
+ }
+
+ int num2 = numArray[9];
+ switch (command.Nationalcode)
+ {
+ case "0000000000":
+ case "1111111111":
+ case "22222222222":
+ case "33333333333":
+ case "4444444444":
+ case "5555555555":
+ case "6666666666":
+ case "7777777777":
+ case "8888888888":
+ case "9999999999":
+
+
+
+
+ return op.Failed("کد ملی وارد شده صحیح نمی باشد");
+
+
+ }
+
+ int num3 =
+ ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) +
+ (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) +
+ (numArray[8] * 2);
+ int num4 = num3 - ((num3 / 11) * 11);
+ if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) ||
+ ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10)
+ {
+
+
+
+
+ nationalCode = command.Nationalcode;
+
+
+ }
+ else
+ {
+
+
+ return op.Failed("کد ملی وارد شده نا معتبر است");
+ }
+ }
+ catch (Exception)
+ {
+
+ return op.Failed("لطفا کد ملی 10 رقمی وارد کنید");
+
+ }
+
+ }
+ else
+ {
+ nationalCode = "";
+ }
+
+ var createReal = new Representative(command.FName, command.LName, "*",
+ nationalCode, command.IdNumber, "*", "*",
+ "false", command.Phone, command.AgentPhone, command.Address
+ );
+
+
+ _representativeRepository.Create(createReal);
+ _representativeRepository.SaveChanges();
+
+ return op.Succcedded();
+
+
+
+ }
+
+ public OperationResult CreateLegal(CreateLegalRepresentative command)
+
+ {
+ var op = new OperationResult();
+ if (_representativeRepository.Exists(x =>
+ x.LegalName == command.LegalName && x.RegisterId == command.RegisterId))
+ return op.Failed("امکان ثبت رکورد تکراری وجود ندارد");
+ if (_representativeRepository.Exists(x => x.LegalName == command.LegalName))
+ {
+ legalNameIsOk = false;
+ return op.Failed("نام شرکت وارد شده تکراری است");
+ }
+ if (_representativeRepository.Exists(x => x.RegisterId == command.RegisterId))
+ {
+
+ return op.Failed("شماره ثبت وارد شده تکراری است");
+
+ }
+ if (_representativeRepository.Exists(x => x.NationalId == command.NationalId))
+ {
+
+ return op.Failed("شناسه ملی وارد شده تکراری است");
+ }
+ var createLegal = new Representative("*", "*",
+ command.LegalName, "*", "*", command.RegisterId, command.NationalId,
+ "true",
+ command.Phone, command.AgentPhone, command.Address);
+
+
+ _representativeRepository.Create(createLegal);
+ _representativeRepository.SaveChanges();
+
+ return op.Succcedded();
+
+
+ }
+
+ public OperationResult EditReal(EditRealRepresentative command)
+ {
+ var nationalCode = string.Empty;
+ var opration = new OperationResult();
+ var representativeRealEdit = _representativeRepository.Get(command.Id);
+ if (representativeRealEdit == null)
+ return opration.Failed("رکورد مورد نظر یافت نشد");
+
+ if (_representativeRepository.Exists(x =>
+ x.LName == command.LName && x.FName == command.FName && x.id != command.Id))
+ return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد");
+ if (!string.IsNullOrWhiteSpace(command.Nationalcode))
+ {
+ if (_representativeRepository.Exists(x => x.Nationalcode == command.Nationalcode && x.id != command.Id))
+ {
+
+
+ return opration.Failed("کد ملی وارد شده تکراری است");
+ }
+ try
+ {
+
+
+ char[] chArray = command.Nationalcode.ToCharArray();
+ int[] numArray = new int[chArray.Length];
+ var cunt = chArray.Length;
+ for (int i = 0; i < chArray.Length; i++)
+ {
+ numArray[i] = (int)char.GetNumericValue(chArray[i]);
+ }
+
+ int num2 = numArray[9];
+ switch (command.Nationalcode)
+ {
+ case "0000000000":
+ case "1111111111":
+ case "22222222222":
+ case "33333333333":
+ case "4444444444":
+ case "5555555555":
+ case "6666666666":
+ case "7777777777":
+ case "8888888888":
+ case "9999999999":
+
+
+
+
+ return opration.Failed("کد ملی وارد شده صحیح نمی باشد");
+
+
+ }
+
+ int num3 =
+ ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) +
+ (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) +
+ (numArray[8] * 2);
+ int num4 = num3 - ((num3 / 11) * 11);
+ if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) ||
+ ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10)
+ {
+
+
+
+
+ nationalCode = command.Nationalcode;
+
+
+ }
+ else
+ {
+
+
+ return opration.Failed("کد ملی وارد شده نا معتبر است");
+ }
+ }
+ catch (Exception)
+ {
+
+ return opration.Failed("لطفا کد ملی 10 رقمی وارد کنید");
+
+ }
+
+ }
+ else
+ {
+ nationalCode = "";
+ }
+
+ representativeRealEdit.EditReal(command.FName, command.LName,
+ nationalCode, command.IdNumber,
+ command.Phone, command.AgentPhone, command.Address);
+
+ _representativeRepository.SaveChanges();
+ return opration.Succcedded();
+
+ }
+ public OperationResult EditLegal(EditLegalRepresentative command)
+ {
+ var opration = new OperationResult();
+ var representativeLegalEdit = _representativeRepository.Get(command.Id);
+ if (representativeLegalEdit == null)
+ return opration.Failed("رکورد مورد نظر یافت نشد");
+
+ if (_representativeRepository.Exists(x =>
+ x.LegalName == command.LegalName && x.RegisterId == command.RegisterId && x.id != command.Id))
+ return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد");
+
+ representativeLegalEdit.EditLegal(command.LegalName, command.RegisterId,
+ command.NationalId,
+ command.Phone, command.AgentPhone, command.Address);
+
+ _representativeRepository.SaveChanges();
+ return opration.Succcedded();
+ }
+
+ public async Task> GetSelectList()
+ {
+ return await _representativeRepository.GetSelectList();
+ }
+
+ public async Task> GetList(RepresentativeGetListSearchModel searchModel)
+ {
+ return (await _representativeRepository.GetList(searchModel)).ToList();
+ }
+
+ public bool HasAnyContractingParty(long id)
+ {
+ return _representativeRepository.HasAnyContractingParty(id);
+ }
+
+ #endregion
}
\ No newline at end of file
diff --git a/CompanyManagment.Application/TemporaryClientRegistrationApplication.cs b/CompanyManagment.Application/TemporaryClientRegistrationApplication.cs
index 941e283f..a74e1df6 100644
--- a/CompanyManagment.Application/TemporaryClientRegistrationApplication.cs
+++ b/CompanyManagment.Application/TemporaryClientRegistrationApplication.cs
@@ -13,6 +13,7 @@ using CompanyManagment.App.Contracts.TemporaryClientRegistration;
using IPE.SmsIrClient.Models.Results;
using Microsoft.EntityFrameworkCore;
using PersianTools.Core;
+using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;
namespace CompanyManagment.Application;
@@ -67,7 +68,7 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
return op.Failed("شماره همراه نا معتبر است");
-
+
#endregion
@@ -141,6 +142,8 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
result.FName = createTemp.FName;
result.LName = createTemp.LName;
result.DateOfBirthFa = dateOfBirth;
+ result.FatherName = createTemp.FatherName;
+ result.IdNumberSerial = createTemp.IdNumberSerial;
result.IdNumber = idNumber;
return op.Succcedded(result);
@@ -188,7 +191,7 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
///
///
///
- public async Task CreateOrUpdateWorkshopTemp(List command)
+ public async Task CreateOrUpdateWorkshopTemp(List command, long contractingPartyTempId)
{
var op = new OperationResult();
var updateWorkshopList = command.Where(x => x.Id > 0).ToList();
@@ -196,10 +199,17 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
if (updateWorkshopList.Count == 0 && createNewWorkshopList.Count == 0)
return op.Failed("هیچ مجموعه ای ایجاد نشده است");
+ var oldWorkshops = await _workshopTempRepository.GetWorkshopTemp(contractingPartyTempId);
#region Update
if (updateWorkshopList.Count > 0)
{
+ var updateListIds = updateWorkshopList.Select(x => x.Id).ToList();
+ var oldWorkshopsIds = oldWorkshops.Select(x => x.Id).ToList();
+ var exceptWorkshops = oldWorkshopsIds.Except(updateListIds).ToList();
+ if (exceptWorkshops.Any())
+ await _workshopTempRepository.RemoveWorkshopTemps(exceptWorkshops);
+
foreach (var workshop in updateWorkshopList)
{
@@ -212,6 +222,7 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
workshop.RollCall == false && workshop.Insurance == false)
op.Failed($"برای مجموعه {workshop.WorkshopName} هیچ سرویسی انتخاب نشده است");
var existWorkshops = _workshopTempRepository.Get(workshop.Id);
+
if (existWorkshops != null)
{
if (workshop.ContractAndCheckout)
@@ -256,6 +267,8 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
if (workshop.CustomizeCheckout)
await _workshopServicesTempRepository.CreateAsync(
new WorkshopServicesTemp("CustomizeCheckout", workshop.CountPerson, workshop.Id));
+
+ await _workshopServicesTempRepository.SaveChangesAsync();
}
}
@@ -324,6 +337,8 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
if (workshop.CustomizeCheckout)
await _workshopServicesTempRepository.CreateAsync(
new WorkshopServicesTemp("CustomizeCheckout", workshop.CountPerson, createNewWorkshopTemp.id));
+
+ await _workshopServicesTempRepository.SaveChangesAsync();
}
}
@@ -352,8 +367,9 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
///
///
///
- public async Task GetTotalPaymentAndWorkshopList(long contractingPartyTempId, string periodModel = "12", string paymentModel = "OneTime")
+ public async Task GetTotalPaymentAndWorkshopList(long contractingPartyTempId, string periodModel = "12", string paymentModel = "OneTime", string contractStartType = "currentMonth")
{
+
//دریافت کارگاه ها
var workshops = await _workshopTempRepository.GetWorkshopTemp(contractingPartyTempId);
@@ -380,9 +396,10 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
_ => 12,
};
//رند کردن مبالغ کارگاه ها
- var roundAmount = (int)(totalPayment1MonthDouble / 1000000) * 1000000;
+ var roundAmount = (((Convert.ToInt64(totalPayment1MonthDouble))) / 1000000) * 1000000;
+ double roundAmount2 = roundAmount;
//بدست آوردن جمع کل مبالغ کارگاه بر اساس مدت قراداد
- result.SumOfWorkshopsPaymentDouble = roundAmount * months;
+ result.SumOfWorkshopsPaymentDouble = months * roundAmount2;
result.SumOfWorkshopsPaymentPaymentStr = result.SumOfWorkshopsPaymentDouble.ToMoney();
@@ -394,31 +411,112 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
//مالیات
result.ValueAddedTaxDouble = tenPercent;
result.ValueAddedTaxSt = tenPercent.ToMoney();
- if (paymentModel == "OneTime")//تخفیف 10 درصدی درصورت پرداخت یکجا
+ //پرداخت یکجا
+ #region OneTimePaymentResult
+
+ double discountOneTimePeyment = result.SumOfWorkshopsPaymentDouble - tenPercent;
+
+
+ //مبلغ بدون مالیات و با تخفیف
+ result.OneTimeWithoutTaxPaymentDouble = discountOneTimePeyment;
+ result.OneTimeWithoutTaxPaymentStr = discountOneTimePeyment.ToMoney();
+
+ //مبلغ با مالیات
+ result.OneTimeTotalPaymentDouble = discountOneTimePeyment + tenPercent;
+ result.OneTimeTotalPaymentStr = result.OneTimeTotalPaymentDouble.ToMoney();
+
+ #endregion
+
+ //پرداخت ماهیانه
+ #region MonthlyPaymentResult
+
+ //مبلغ بدون مالیات
+ result.MonthlyWithoutTaxPaymentDouble = result.SumOfWorkshopsPaymentDouble;
+ result.MonthlyWithoutTaxPaymentStr = result.SumOfWorkshopsPaymentDouble.ToMoney();
+
+ // مبلغ با مالیات
+ result.MonthlyTotalPaymentDouble = result.SumOfWorkshopsPaymentDouble + tenPercent;
+ result.MonthlyTotalPaymentStr = result.MonthlyTotalPaymentDouble.ToMoney();
+ var installmentList = new List();
+
+ var startDate = (DateTime.Now).ToFarsi();
+ result.ContractStartCurrentMonthFa = $"{startDate.Substring(0, 8)}01";
+ result.ContractStartCurrentMonthGr = result.ContractStartCurrentMonthFa.ToGeorgianDateTime();
+ startDate = result.ContractStartCurrentMonthFa;
+
+ result.ContractStartNextMonthGr = ((startDate.FindeEndOfMonth()).ToGeorgianDateTime()).AddDays(1);
+ result.ContractStartNextMonthFa = result.ContractStartNextMonthGr.ToFarsi();
+
+ if (contractStartType == "nextMonth")
+ startDate = result.ContractStartNextMonthFa;
+
+
+
+ var findeEnd = Tools.FindEndOfContract(startDate, periodModel);
+ var contractEndDate = findeEnd.endDateGr;
+ result.ContractEndGr = contractEndDate;
+ result.ContractEndFa = contractEndDate.ToFarsi();
+
+ if (periodModel == "1")
{
- double discountOneTimePeyment = result.SumOfWorkshopsPaymentDouble - tenPercent;
-
+ installmentList.Add(new MonthlyInstallment()
+ {
+ InstallmentAmountStr = result.MonthlyTotalPaymentStr,
+ InstallmentCounter = "سررسید پرداخت اول",
+ InstalmentDate = (DateTime.Now).ToFarsi()
- //مبلغ بدون مالیات و با تخفیف
- result.WithoutTaxPaymentDouble = discountOneTimePeyment;
- result.WithoutTaxPaymentStr = discountOneTimePeyment.ToMoney();
-
- //مبلغ با مالیات
- result.TotalPaymentDouble = discountOneTimePeyment + tenPercent;
- result.TotalPaymentStr = result.TotalPaymentDouble.ToMoney();
+ });
+ result.MonthlyInstallments = installmentList;
}
else
{
- //مبلغ بدون مالیات
- result.WithoutTaxPaymentDouble = result.SumOfWorkshopsPaymentDouble;
- result.WithoutTaxPaymentStr = result.SumOfWorkshopsPaymentDouble.ToMoney();
+ int instalmentCount = Convert.ToInt32(periodModel);
+ var instalmentAmount = result.MonthlyTotalPaymentDouble / instalmentCount;
+ var findEndOfMonth = startDate.FindeEndOfMonth();
+ for (int i = 1; i <= instalmentCount; i++)
+ {
+ if (i == 1)
+ {
+ startDate = (DateTime.Now).ToFarsi();
+
+ }
+ else if (i > 1)
+ {
+ var currentMonthStart = ((findEndOfMonth.ToGeorgianDateTime()).AddDays(1)).ToFarsi();
+ startDate = currentMonthStart.FindeEndOfMonth();
+ findEndOfMonth = startDate;
+ }
+
+ installmentList.Add(new MonthlyInstallment()
+ {
+ InstallmentAmountStr = instalmentAmount.ToMoney(),
+ InstallmentCounter = i switch
+ {
+ 1 => "سررسید پرداخت اول",
+ 2 => "سررسید پرداخت دوم",
+ 3 => "سررسید پرداخت سوم",
+ 4 => "سررسید پرداخت چهارم",
+ 5 => "سررسید پرداخت پنجم",
+ 6 => "سررسید پرداخت ششم",
+ 7 => "سررسید پرداخت هفتم",
+ 8 => "سررسید پرداخت هشتم",
+ 9 => "سررسید پرداخت نهم",
+ 10 => "سررسید پرداخت دهم",
+ 11 => "سررسید پرداخت یازدهم",
+ 12 => "سررسید پرداخت دوازدهم",
+ _ => "سررسید پرداخت دوازدهم",
+ },
+ InstalmentDate = startDate
+
+ });
+ }
- // مبلغ با مالیات
- result.TotalPaymentDouble = result.SumOfWorkshopsPaymentDouble + tenPercent;
- result.TotalPaymentStr = result.TotalPaymentDouble.ToMoney();
}
+ #endregion
+
+ result.MonthlyInstallments = installmentList;
result.ContractingPartTempId = contractingPartyTempId;
return result;
@@ -430,42 +528,57 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
///
///
///
- public async Task CreateOrUpdateInstitutionContractTemp(long contractingPartyTempId, string periodModel, string paymentModel, double totalPayment, double valueAddedTax)
+ public async Task CreateOrUpdateInstitutionContractTemp(long contractingPartyTempId, string periodModel, string paymentModel, double totalPayment, double valueAddedTax, DateTime contractStart)
{
var op = new OperationResult();
+
+
+
var institutionContractTemp = await
_institutionContractTempRepository.GetInstitutionContractTemp(0, contractingPartyTempId);
-
+ var contractStartDate = contractStart;
+ string contractStartFa = contractStart.ToFarsi();
+ var findeEnd = Tools.FindEndOfContract(contractStartFa, periodModel);
+ var contractEndDate = findeEnd.endDateGr;
if (institutionContractTemp == null)
{
var periodModelInt = Convert.ToInt32(periodModel);
- var contractstart = DateTime.Now;
- var contractEnd = DateTime.Now.AddMonths(periodModelInt);
- var create = new InstitutionContractTemp(contractingPartyTempId,paymentModel,periodModel,totalPayment,contractstart,contractEnd,"official", valueAddedTax,"", "BeforeSendVerifyCode", 0,null,null);
+
+ var create = new InstitutionContractTemp(contractingPartyTempId, paymentModel, periodModel, totalPayment, contractStartDate, contractEndDate, "official", valueAddedTax, "", "BeforeSendVerifyCode", 0, null, null);
_institutionContractTempRepository.Create(create);
_institutionContractTempRepository.SaveChanges();
+
+ //temporary
+ var res = await PayOffCompleted(contractingPartyTempId);
+ if (!res.IsSuccedded)
+ return op.Failed(res.Message);
return op.Succcedded();
}
else
{
if (institutionContractTemp.VerifyCodeEndTime != null)
{
- var spaning = (institutionContractTemp.VerifyCodeEndTime.Value - DateTime.Now);
+ var spaning = (DateTime.Now - institutionContractTemp.VerifyCodeEndTime.Value);
if (institutionContractTemp.RegistrationStatus == "VerifyCodeSent" && spaning > new TimeSpan(0, 0, 0) && spaning < new TimeSpan(0, 1, 0))
return op.Failed("شما به تازگی پیامک دریافت نموده اید دو دقیقه صبر کنید و دوباره تلاش کنید");
}
-
+
if (institutionContractTemp.RegistrationStatus == "Completed")
return op.Failed("شما قبلا ثبت نام خود را تکمیل نموده اید");
-
+
var periodModelInt = Convert.ToInt32(periodModel);
var contractstart = DateTime.Now;
var contractEnd = DateTime.Now.AddMonths(periodModelInt);
var update = _institutionContractTempRepository.Get(institutionContractTemp.Id);
- update.Edit(contractingPartyTempId, paymentModel, periodModel, totalPayment, contractstart, contractEnd, "official", valueAddedTax, "", "BeforeSendVerifyCode", 0, null, null);
+ update.Edit(contractingPartyTempId, paymentModel, periodModel, totalPayment, contractStartDate, contractEndDate, "official", valueAddedTax, "", "BeforeSendVerifyCode", 0, null, null);
_institutionContractTempRepository.SaveChanges();
+
+ //temporary
+ var res = await PayOffCompleted(contractingPartyTempId);
+ if (!res.IsSuccedded)
+ return op.Failed(res.Message);
return op.Succcedded();
}
@@ -483,14 +596,16 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
{
var op = new OperationResult();
- var institutionContractTemp = await
- _institutionContractTempRepository.GetInstitutionContractTemp(0, contractingPartyTempId);
+
+
+ var institutionContractTemp = await
+ _institutionContractTempRepository.GetInstitutionContractTemp(0, contractingPartyTempId);
if (institutionContractTemp == null)
- return op.Failed("خظا");
+ return op.Failed("خطا");
var update = _institutionContractTempRepository.Get(institutionContractTemp.Id);
-
+
if (institutionContractTemp.RegistrationStatus == "BeforeSendVerifyCode")
@@ -516,26 +631,29 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
return op.Succcedded(1, "کد برای شما پیامک شد");
}
-
+
}
if (institutionContractTemp.RegistrationStatus == "VerifyCodeSent")
{
- var spaning = (institutionContractTemp.VerifyCodeEndTime.Value - DateTime.Now);
- if ((spaning > new TimeSpan(0, 0, 0) && spaning < new TimeSpan(0, 1, 0)))
+
+ if (DateTime.Now < institutionContractTemp.VerifyCodeEndTime.Value)
+ return op.Failed("کد دریافت شده را وارد کنید");
+ var spaning = (DateTime.Now - institutionContractTemp.VerifyCodeEndTime.Value);
+ if ((spaning > new TimeSpan(0, 0, 0) && spaning < new TimeSpan(0, 1, 0)))
return op.Failed("شما به تازگی پیامک دریافت نموده اید دو دقیقه صبر کنید و دوباره تلاش کنید");
- if ((spaning > new TimeSpan(0, 0, 0) && spaning > new TimeSpan(0, 1, 0)))
+ if ((spaning > new TimeSpan(0, 1, 0)))
{
//ساخت کد شش رقمی
Random generator = new Random();
String code = generator.Next(1, 1000000).ToString("D6");
//ارسال اس ام اس
var getContractingPaty = _contractingPartyTempRepository.GetByContractingPartyTempId(contractingPartyTempId);
- var sendResult =await _smsService.SendVerifyCodeToClient(getContractingPaty.Phone, code);
+ var sendResult = await _smsService.SendVerifyCodeToClient(getContractingPaty.Phone, code);
- if(!sendResult.IsSuccedded)
+ if (!sendResult.IsSuccedded)
return op.Failed($"{sendResult.Message}");
@@ -544,16 +662,16 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
//ذخیره تاریخ ارسال و مهلت پایان
//ذخیره آیدی پیامک
//تغییر وضعیت به ارسال شده
-
+
if (update != null)
{
- update.Update(code, "VerifyCodeSent",sendResult.MessageId, DateTime.Now, DateTime.Now.AddMinutes(2));
+ update.Update(code, "VerifyCodeSent", sendResult.MessageId, DateTime.Now, DateTime.Now.AddMinutes(2));
_institutionContractTempRepository.SaveChanges();
return op.Succcedded(1, "کد برای شما پیامک شد");
}
-
-
+
+
}
}
@@ -580,25 +698,25 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
_institutionContractTempRepository.GetInstitutionContractTemp(0, contractingPartyTempId);
if (institutionContractTemp == null)
return op.Failed("خظا");
- if(institutionContractTemp.RegistrationStatus != "VerifyCodeSent")
+ if (institutionContractTemp.RegistrationStatus != "VerifyCodeSent")
return op.Failed("خطا");
- if(institutionContractTemp.VerifyCodeEndTime < DateTime.Now)
+ if (institutionContractTemp.VerifyCodeEndTime < DateTime.Now)
return op.Failed("کد شما منقضی شده است");
- if(institutionContractTemp.SendVerifyCodeTime < DateTime.Now && institutionContractTemp.VerifyCodeEndTime >= DateTime.Now)
+ if (institutionContractTemp.SendVerifyCodeTime < DateTime.Now && institutionContractTemp.VerifyCodeEndTime >= DateTime.Now)
{
if (institutionContractTemp.VerifyCode == verifyCode)
{
-
+
return op.Succcedded();
}
else
{
return op.Failed("کد وارد شده صحیح نیست");
}
-
+
}
@@ -615,7 +733,38 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
public async Task PayOffCompleted(long contractingPartyTempId)
{
var op = new OperationResult();
+
+ var temp = _contractingPartyTempRepository.GetByContractingPartyTempId(contractingPartyTempId);
+ if (_personalContractingPartyRepository.Exists(x =>
+ x.Nationalcode == temp.NationalCode))
+ return op.Failed("امکان ثبت رکورد تکراری وجود ندارد");
+
+ var lastArchiveCode = _personalContractingPartyRepository.GetLastArchiveCode();
+ var personalContractingParty = new PersonalContractingParty(temp.FName, temp.LName,
+ temp.NationalCode, temp.IdNumber, "*", "*",
+ "حقیقی",
+ temp.Phone, null, temp.Address, 1, "-", lastArchiveCode,
+ temp.State, temp.City, null, null);
+ _personalContractingPartyRepository.Create(personalContractingParty);
+ _personalContractingPartyRepository.SaveChanges();
+
+ personalContractingParty.RegisterComplete(temp.FatherName, temp.IdNumberSeri, temp.IdNumberSerial, temp.DateOfBirth, temp.Gender);
+ _personalContractingPartyRepository.SaveChanges();
+ var institutionContractTemp = await
+ _institutionContractTempRepository.GetInstitutionContractTemp(0, contractingPartyTempId);
+ var update = _institutionContractTempRepository.Get(institutionContractTemp.Id);
+ update.ChangeRegistrationStatus("Completed");
+ _institutionContractTempRepository.SaveChanges();
+
+
return op.Succcedded();
}
+
+ public async Task> RegistrationWorkflowMainList()
+ {
+
+ return await _institutionContractTempRepository.GetAllCompletedRegistration();
+ }
+
}
\ No newline at end of file
diff --git a/CompanyManagment.EFCore/CompanyContext.cs b/CompanyManagment.EFCore/CompanyContext.cs
index 3697248b..5252f4a9 100644
--- a/CompanyManagment.EFCore/CompanyContext.cs
+++ b/CompanyManagment.EFCore/CompanyContext.cs
@@ -9,6 +9,7 @@ using Company.Domain.CheckoutAgg;
using Company.Domain.ClassifiedSalaryAgg;
using Company.Domain.ClientEmployeeWorkshopAgg;
using Company.Domain.Contact2Agg;
+using Company.Domain.ContactUsAgg;
using Company.Domain.ContarctingPartyAgg;
using Company.Domain.ContractAgg;
using Company.Domain.ContractingPartyAccountAgg;
@@ -77,6 +78,7 @@ using Company.Domain.ModuleTextManagerAgg;
using Company.Domain.OriginalTitleAgg;
using Company.Domain.PaymentToEmployeeAgg;
using Company.Domain.PaymentToEmployeeItemAgg;
+using Company.Domain.PaymentTransactionAgg;
using Company.Domain.PenaltyTitle;
using Company.Domain.PercentageAgg;
using Company.Domain.PersonnelCodeAgg;
@@ -175,9 +177,12 @@ public class CompanyContext : DbContext
public DbSet EmployeeClientTemps { get; set; }
public DbSet LeftWorkTemps { get; set; }
+ public DbSet ContactUs { get; set; }
+
public DbSet EmployeeAuthorizeTemps { get; set; }
public DbSet AdminMonthlyOverviews { get; set; }
+ public DbSet PaymentTransactions{ get; set; }
#endregion
#region Pooya
diff --git a/CompanyManagment.EFCore/Mapping/ContactUsMapping.cs b/CompanyManagment.EFCore/Mapping/ContactUsMapping.cs
new file mode 100644
index 00000000..cc3b5ddf
--- /dev/null
+++ b/CompanyManagment.EFCore/Mapping/ContactUsMapping.cs
@@ -0,0 +1,20 @@
+using Company.Domain.ContactUsAgg;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+
+namespace CompanyManagment.EFCore.Mapping;
+
+public class ContactUsMapping:IEntityTypeConfiguration
+{
+ public void Configure(EntityTypeBuilder builder)
+ {
+ builder.HasKey(x => x.id);
+ builder.Property(x => x.FullName).HasMaxLength(200);
+ builder.Property(x => x.Title).HasMaxLength(200);
+ builder.Property(x => x.Email).HasMaxLength(200);
+ builder.Property(x => x.FirstName).HasMaxLength(100);
+ builder.Property(x => x.LastName).HasMaxLength(100);
+ builder.Property(x => x.Message).HasMaxLength(500);
+ builder.Property(x => x.PhoneNumber).HasMaxLength(20);
+ }
+}
\ No newline at end of file
diff --git a/CompanyManagment.EFCore/Mapping/PaymentTransactionMapping.cs b/CompanyManagment.EFCore/Mapping/PaymentTransactionMapping.cs
new file mode 100644
index 00000000..9a8742e1
--- /dev/null
+++ b/CompanyManagment.EFCore/Mapping/PaymentTransactionMapping.cs
@@ -0,0 +1,24 @@
+using Company.Domain.PaymentTransactionAgg;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+
+namespace CompanyManagment.EFCore.Mapping;
+
+public class PaymentTransactionMapping:IEntityTypeConfiguration
+{
+ public void Configure(EntityTypeBuilder builder)
+ {
+ builder.ToTable("PaymentTransactions");
+ builder.HasKey(pt => pt.id);
+
+ builder.Property(x => x.TransactionId).HasMaxLength(60);
+ builder.Property(x => x.CardNumber).HasMaxLength(25);
+ builder.Property(x => x.AccountNumber).HasMaxLength(25);
+ builder.Property(x => x.BankName).HasMaxLength(50);
+ builder.Property(x => x.BankAccountHolderName).HasMaxLength(255);
+ builder.Property(x => x.Status).HasConversion().HasMaxLength(35);
+ builder.Property(x => x.ShebaNumber).HasMaxLength(30);
+ builder.Property(x => x.ContractingPartyName).HasMaxLength(255);
+
+ }
+}
\ No newline at end of file
diff --git a/CompanyManagment.EFCore/Mapping/PersonalContractingpartyMapping.cs b/CompanyManagment.EFCore/Mapping/PersonalContractingpartyMapping.cs
index 60d0179a..9274487d 100644
--- a/CompanyManagment.EFCore/Mapping/PersonalContractingpartyMapping.cs
+++ b/CompanyManagment.EFCore/Mapping/PersonalContractingpartyMapping.cs
@@ -39,7 +39,7 @@ public class PersonalContractingpartyMapping : IEntityTypeConfiguration x.IdNumberSerial).HasMaxLength(15);
builder.Property(x => x.FatherName).HasMaxLength(20);
builder.Property(x => x.DateOfBirth).IsRequired(false);
- builder.Property(x => x.Gender).HasConversion(
+ builder.Property(x => x.Gender).HasConversion(
v => v.ToString(),
v => string.IsNullOrWhiteSpace(v) ? Gender.None : (Gender)Enum.Parse(typeof(Gender), v)).HasMaxLength(6);
diff --git a/CompanyManagment.EFCore/Migrations/20250423184716_add contact us .Designer.cs b/CompanyManagment.EFCore/Migrations/20250423184716_add contact us .Designer.cs
new file mode 100644
index 00000000..0e4931ae
--- /dev/null
+++ b/CompanyManagment.EFCore/Migrations/20250423184716_add contact us .Designer.cs
@@ -0,0 +1,9450 @@
+//
+using System;
+using CompanyManagment.EFCore;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace CompanyManagment.EFCore.Migrations
+{
+ [DbContext(typeof(CompanyContext))]
+ [Migration("20250423184716_add contact us ")]
+ partial class addcontactus
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "8.0.10")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
+
+ modelBuilder.Entity("Company.Domain.AndroidApkVersionAgg.AndroidApkVersion", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("IsActive")
+ .IsRequired()
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)");
+
+ b.Property("Path")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)");
+
+ b.Property("Title")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("VersionCode")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)");
+
+ b.Property("VersionName")
+ .HasMaxLength(35)
+ .HasColumnType("nvarchar(35)");
+
+ b.HasKey("id");
+
+ b.ToTable("AndroidApkVersions", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.BankAgg.Bank", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("BankLogoMediaId")
+ .HasColumnType("bigint");
+
+ b.Property("BankName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.HasKey("id");
+
+ b.ToTable("Banks", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.BillAgg.EntityBill", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("Appointed")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Contact")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Description")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsActiveString")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ProcessingStage")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("SubjectBill")
+ .IsRequired()
+ .HasMaxLength(500)
+ .HasColumnType("nvarchar(500)");
+
+ b.HasKey("id");
+
+ b.ToTable("TextManager_Bill", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.Board.Board", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("BoardChairman")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("BoardType_Id")
+ .HasColumnType("int");
+
+ b.Property("Branch")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("DisputeResolutionPetitionDate")
+ .HasColumnType("datetime2");
+
+ b.Property("ExpertReport")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("File_Id")
+ .HasColumnType("bigint");
+
+ b.HasKey("id");
+
+ b.HasIndex("BoardType_Id");
+
+ b.HasIndex("File_Id");
+
+ b.ToTable("Boards", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.BoardType.BoardType", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("Title")
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.ToTable("BoardTypes", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.ChapterAgg.EntityChapter", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("Chapter")
+ .IsRequired()
+ .HasMaxLength(60)
+ .HasColumnType("nvarchar(60)");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("IsActiveString")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Subtitle_Id")
+ .HasColumnType("bigint");
+
+ b.HasKey("id");
+
+ b.HasIndex("Subtitle_Id");
+
+ b.ToTable("TextManager_Chapter", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.CheckoutAgg.Checkout", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("AbsenceDeduction")
+ .HasColumnType("float");
+
+ b.Property("AbsencePeriod")
+ .HasColumnType("float");
+
+ b.Property("AbsenceValue")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("ArchiveCode")
+ .HasMaxLength(15)
+ .HasColumnType("nvarchar(15)");
+
+ b.Property("AverageHoursPerDay")
+ .HasColumnType("float");
+
+ b.Property("BaseYearsPay")
+ .HasColumnType("float");
+
+ b.Property("BonusesPay")
+ .HasColumnType("float");
+
+ b.Property("ConsumableItems")
+ .HasColumnType("float");
+
+ b.Property("ContractEnd")
+ .HasColumnType("datetime2");
+
+ b.Property("ContractId")
+ .HasColumnType("bigint");
+
+ b.Property("ContractNo")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("ContractStart")
+ .HasColumnType("datetime2");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("CreditLeaves")
+ .HasColumnType("float");
+
+ b.Property("DateOfBirth")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("EmployeeFullName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("EmployeeId")
+ .HasColumnType("bigint");
+
+ b.Property("FamilyAllowance")
+ .HasColumnType("float");
+
+ b.Property("FathersName")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)");
+
+ b.Property("FridayPay")
+ .HasColumnType("float");
+
+ b.Property("FridayWorkValue")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("HasRollCall")
+ .HasColumnType("bit");
+
+ b.Property("HousingAllowance")
+ .HasColumnType("float");
+
+ b.Property("InstallmentDeduction")
+ .HasColumnType("float");
+
+ b.Property("InsuranceDeduction")
+ .HasColumnType("float");
+
+ b.Property("IsActiveString")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("LeaveCheckout")
+ .HasColumnType("bit");
+
+ b.Property("LeavePay")
+ .HasColumnType("float");
+
+ b.Property("MarriedAllowance")
+ .HasColumnType("float");
+
+ b.Property("MissionPay")
+ .HasColumnType("float");
+
+ b.Property("Month")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("MonthlySalary")
+ .HasColumnType("float");
+
+ b.Property("NationalCode")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("NightworkPay")
+ .HasColumnType("float");
+
+ b.Property("OverNightWorkValue")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("OverTimeWorkValue")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("OvertimePay")
+ .HasColumnType("float");
+
+ b.Property("PersonnelCode")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("RewardPay")
+ .HasColumnType("float");
+
+ b.Property("RotatingShiftValue")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("SalaryAidDeduction")
+ .HasColumnType("float");
+
+ b.Property("ShiftPay")
+ .HasColumnType("float");
+
+ b.Property("Signature")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)");
+
+ b.Property("SumOfWorkingDays")
+ .HasMaxLength(6)
+ .HasColumnType("nvarchar(6)");
+
+ b.Property("TaxDeducation")
+ .HasColumnType("float");
+
+ b.Property("TotalClaims")
+ .HasMaxLength(25)
+ .HasColumnType("nvarchar(25)");
+
+ b.Property("TotalDayOfBunosesCompute")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("TotalDayOfLeaveCompute")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("TotalDayOfYearsCompute")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)");
+
+ b.Property("TotalDeductions")
+ .HasMaxLength(25)
+ .HasColumnType("nvarchar(25)");
+
+ b.Property("TotalPayment")
+ .HasColumnType("float");
+
+ b.Property("WorkingHoursId")
+ .HasColumnType("bigint");
+
+ b.Property("WorkshopId")
+ .HasColumnType("bigint");
+
+ b.Property("WorkshopName")
+ .HasMaxLength(70)
+ .HasColumnType("nvarchar(70)");
+
+ b.Property("Year")
+ .HasMaxLength(4)
+ .HasColumnType("nvarchar(4)");
+
+ b.Property("YearsPay")
+ .HasColumnType("float");
+
+ b.HasKey("id");
+
+ b.HasIndex("WorkshopId");
+
+ b.ToTable("Checkouts", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.ClassifiedSalaryAgg.ClassifiedSalary", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("EndDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Group1")
+ .HasColumnType("float");
+
+ b.Property("Group10")
+ .HasColumnType("float");
+
+ b.Property("Group11")
+ .HasColumnType("float");
+
+ b.Property("Group12")
+ .HasColumnType("float");
+
+ b.Property("Group13")
+ .HasColumnType("float");
+
+ b.Property("Group14")
+ .HasColumnType("float");
+
+ b.Property("Group15")
+ .HasColumnType("float");
+
+ b.Property("Group16")
+ .HasColumnType("float");
+
+ b.Property("Group17")
+ .HasColumnType("float");
+
+ b.Property("Group18")
+ .HasColumnType("float");
+
+ b.Property("Group19")
+ .HasColumnType("float");
+
+ b.Property("Group2")
+ .HasColumnType("float");
+
+ b.Property("Group20")
+ .HasColumnType("float");
+
+ b.Property("Group3")
+ .HasColumnType("float");
+
+ b.Property("Group4")
+ .HasColumnType("float");
+
+ b.Property("Group5")
+ .HasColumnType("float");
+
+ b.Property("Group6")
+ .HasColumnType("float");
+
+ b.Property("Group7")
+ .HasColumnType("float");
+
+ b.Property("Group8")
+ .HasColumnType("float");
+
+ b.Property("Group9")
+ .HasColumnType("float");
+
+ b.Property("StartDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Year")
+ .HasColumnType("int");
+
+ b.HasKey("id");
+
+ b.ToTable("ClassifiedSalaries", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.ClientEmployeeWorkshopAgg.ClientEmployeeWorkshop", b =>
+ {
+ b.Property("WorkshopId")
+ .HasColumnType("bigint");
+
+ b.Property("EmployeeId")
+ .HasColumnType("bigint");
+
+ b.HasKey("WorkshopId", "EmployeeId");
+
+ b.HasIndex("EmployeeId");
+
+ b.ToTable("ClientWorkshopEmployee", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.Contact2Agg.EntityContact", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("IsActiveString")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("NameContact")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Signature")
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("id");
+
+ b.ToTable("TextManager_Contact", (string)null);
+ });
+
+ modelBuilder.Entity("Company.Domain.ContactUsAgg.ContactUs", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Email")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("FirstName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.Property("FullName")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("LastName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.Property("Message")
+ .HasMaxLength(500)
+ .HasColumnType("nvarchar(500)");
+
+ b.Property("PhoneNumber")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)");
+
+ b.Property("Title")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.HasKey("id");
+
+ b.ToTable("ContactUs");
+ });
+
+ modelBuilder.Entity("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id"));
+
+ b.Property("Address")
+ .HasMaxLength(500)
+ .HasColumnType("nvarchar(500)");
+
+ b.Property("AgentPhone")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("ArchiveCode")
+ .HasColumnType("int");
+
+ b.Property("BlockTimes")
+ .HasColumnType("int");
+
+ b.Property("City")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property