This commit is contained in:
SamSys
2025-03-18 17:19:57 +03:30
10 changed files with 9158 additions and 27 deletions

View File

@@ -3,5 +3,6 @@
public enum Gender
{
Male,
Female
Female,
None
}

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Security.Cryptography.X509Certificates;
using _0_Framework.Application;
using _0_Framework.Domain;
using Company.Domain.empolyerAgg;
using Company.Domain.RepresentativeAgg;
@@ -72,6 +73,11 @@ public class PersonalContractingParty : EntityBase
/// </summary>
public bool IsAuthenticated { get; private set; }
/// <summary>
/// جنسیت
/// </summary>
public Gender Gender { get; private set; }
#endregion
@@ -194,4 +200,17 @@ public class PersonalContractingParty : EntityBase
{
IsAuthenticated = true;
}
public void Authentication(string fName, string lName, string fatherName,string idNumber, string idNumberSeri, string idNumberSerial, string dateOfBirth, Gender gender)
{
this.FName = fName;
this.LName = lName;
this.FatherName = fatherName;
this.IdNumberSeri = idNumberSeri;
this.IdNumberSerial = idNumberSerial;
this.DateOfBirth = !string.IsNullOrWhiteSpace(dateOfBirth) ? dateOfBirth.ToGeorgianDateTime() : null;
this.IdNumber = idNumber;
this.Gender = gender;
this.IsAuthenticated = true;
}
}

View File

@@ -10,5 +10,5 @@ public interface IContractingPartyTempRepository :IRepository<long, ContractingP
/// </summary>
/// <param name="nationalCode"></param>
/// <returns></returns>
bool CheckExistOrAuthenticated(string nationalCode);
bool CheckExistOrAuthenticated(string nationalCode, string dateOfBirth);
}

View File

@@ -4,5 +4,5 @@ namespace CompanyManagment.App.Contracts.TemporaryClientRegistration;
public interface ITemporaryClientRegistrationApplication
{
OperationResult CreateContractingPartyTemp(CreateContractingPartyTemp command);
OperationResult CreateContractingPartyTemp(string nationalCode, string dateOfBirth);
}

View File

@@ -16,14 +16,15 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
_personalContractingPartyRepository = personalContractingPartyRepository;
}
public OperationResult CreateContractingPartyTemp(CreateContractingPartyTemp command)
public OperationResult CreateContractingPartyTemp(string nationalCode , string dateOfBirth)
{
var getExistContractingParty = _contractingPartyTempRepository.CheckExistOrAuthenticated(command.NationalCode);
var op = new OperationResult();
var getExistContractingParty = _contractingPartyTempRepository.CheckExistOrAuthenticated(nationalCode, dateOfBirth);
//اگر طرف حساب قبلا در دیتابیس وجود داشت
if (getExistContractingParty)
{
return op.Failed("طرف حساب با این مشخصات در سیستم وجود دارد");
}
//اگر طرف حساب وجود نداشت
else

View File

@@ -1,4 +1,6 @@
using Company.Domain.ContarctingPartyAgg;
using System;
using _0_Framework.Application;
using Company.Domain.ContarctingPartyAgg;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
@@ -37,7 +39,9 @@ public class PersonalContractingpartyMapping : IEntityTypeConfiguration<Personal
builder.Property(x => x.IdNumberSerial).HasMaxLength(15);
builder.Property(x => x.FatherName).HasMaxLength(20);
builder.Property(x => x.DateOfBirth).IsRequired(false);
builder.Property(x => x.Gender).HasConversion(
v => v.ToString(),
v => string.IsNullOrWhiteSpace(v) ? Gender.None : (Gender)Enum.Parse(typeof(Gender), v)).HasMaxLength(6);
#endregion

View File

@@ -0,0 +1,60 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CompanyManagment.EFCore.Migrations
{
/// <inheritdoc />
public partial class addGenderToPersonalContractingParty : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "Gender",
table: "PersonalContractingParties",
type: "nvarchar(6)",
maxLength: 6,
nullable: false,
defaultValue: "");
migrationBuilder.CreateTable(
name: "ContractingPartyTemp",
columns: table => new
{
id = table.Column<long>(type: "bigint", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
FName = table.Column<string>(type: "nvarchar(25)", maxLength: 25, nullable: false),
LName = table.Column<string>(type: "nvarchar(25)", maxLength: 25, nullable: false),
FatherName = table.Column<string>(type: "nvarchar(25)", maxLength: 25, nullable: true),
Gender = table.Column<string>(type: "nvarchar(6)", maxLength: 6, nullable: false),
NationalCode = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: false),
DateOfBirth = table.Column<DateTime>(type: "datetime2", nullable: false),
IdNumberSeri = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true),
IdNumberSerial = table.Column<string>(type: "nvarchar(15)", maxLength: 15, nullable: true),
IdNumber = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true),
Phone = table.Column<string>(type: "nvarchar(12)", maxLength: 12, nullable: true),
State = table.Column<string>(type: "nvarchar(35)", maxLength: 35, nullable: true),
City = table.Column<string>(type: "nvarchar(35)", maxLength: 35, nullable: true),
Address = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
CreationDate = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_ContractingPartyTemp", x => x.id);
});
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "ContractingPartyTemp");
migrationBuilder.DropColumn(
name: "Gender",
table: "PersonalContractingParties");
}
}
}

View File

@@ -570,6 +570,11 @@ namespace CompanyManagment.EFCore.Migrations
.HasMaxLength(20)
.HasColumnType("nvarchar(20)");
b.Property<string>("Gender")
.IsRequired()
.HasMaxLength(6)
.HasColumnType("nvarchar(6)");
b.Property<string>("IdNumber")
.HasMaxLength(20)
.HasColumnType("nvarchar(20)");
@@ -4780,6 +4785,77 @@ namespace CompanyManagment.EFCore.Migrations
b.ToTable("TaxLeftWorkItem", (string)null);
});
modelBuilder.Entity("Company.Domain.TemporaryClientRegistrationAgg.ContractingPartyTemp", b =>
{
b.Property<long>("id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("id"));
b.Property<string>("Address")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property<string>("City")
.HasMaxLength(35)
.HasColumnType("nvarchar(35)");
b.Property<DateTime>("CreationDate")
.HasColumnType("datetime2");
b.Property<DateTime>("DateOfBirth")
.HasColumnType("datetime2");
b.Property<string>("FName")
.IsRequired()
.HasMaxLength(25)
.HasColumnType("nvarchar(25)");
b.Property<string>("FatherName")
.HasMaxLength(25)
.HasColumnType("nvarchar(25)");
b.Property<string>("Gender")
.IsRequired()
.HasMaxLength(6)
.HasColumnType("nvarchar(6)");
b.Property<string>("IdNumber")
.HasMaxLength(10)
.HasColumnType("nvarchar(10)");
b.Property<string>("IdNumberSeri")
.HasMaxLength(5)
.HasColumnType("nvarchar(5)");
b.Property<string>("IdNumberSerial")
.HasMaxLength(15)
.HasColumnType("nvarchar(15)");
b.Property<string>("LName")
.IsRequired()
.HasMaxLength(25)
.HasColumnType("nvarchar(25)");
b.Property<string>("NationalCode")
.IsRequired()
.HasMaxLength(10)
.HasColumnType("nvarchar(10)");
b.Property<string>("Phone")
.HasMaxLength(12)
.HasColumnType("nvarchar(12)");
b.Property<string>("State")
.HasMaxLength(35)
.HasColumnType("nvarchar(35)");
b.HasKey("id");
b.ToTable("ContractingPartyTemp", (string)null);
});
modelBuilder.Entity("Company.Domain.TextManagerAgg.EntityTextManager", b =>
{
b.Property<long>("id")

View File

@@ -2,6 +2,7 @@
using _0_Framework.Application;
using _0_Framework.Application.UID;
using _0_Framework.InfraStructure;
using AccountMangement.Infrastructure.EFCore.Migrations;
using Company.Domain.TemporaryClientRegistrationAgg;
using CompanyManagment.App.Contracts.PersonalContractingParty;
using Microsoft.EntityFrameworkCore;
@@ -18,34 +19,24 @@ public class ContractingPartyTempRepository : RepositoryBase<long, ContractingPa
_uidService = uidService;
}
//(long id, bool IsAuthenticated) CheckExistOrAuthenticated(string nationalCode)
//{
// //return _context.PersonalContractingParties.Select(x=>new PersonalContractingPartyViewModel
// //{
// // id = x.id,
// // IsAuthenticated = x.IsAuthenticated,
// // Nationalcode = x.Nationalcode,
// // IdNumber = x.IdNumber,
// //}).FirstOrDefault(x => x.Nationalcode == nationalcode);
// return new();
//}
public bool CheckExistOrAuthenticated(string nationalCode)
public bool CheckExistOrAuthenticated(string nationalCode, string dateOfBirth)
{
var contractingParty = _context.PersonalContractingParties.FirstOrDefault(x=>x.Nationalcode == nationalCode);
var contractingParty = _context.PersonalContractingParties.FirstOrDefault(x=>x.Nationalcode == nationalCode && x.IsLegal == "false");
if (contractingParty == null)
return false;
if (!contractingParty.IsAuthenticated && !string.IsNullOrWhiteSpace(contractingParty.Nationalcode) && contractingParty.DateOfBirth != null)
if (!contractingParty.IsAuthenticated && !string.IsNullOrWhiteSpace(contractingParty.Nationalcode))
{
var dateOfbirth = contractingParty.DateOfBirth.ToFarsi();
var apiRespons = _uidService.GetPersonalInfo(contractingParty.Nationalcode, dateOfbirth).Result;
if (apiRespons != null)
if (apiRespons != null && apiRespons.ResponseContext.Status.Code == 0)
{
var idNumber = apiRespons.IdentificationInformation.ShenasnamehNumber == "0"
? apiRespons.IdentificationInformation.NationalId
: apiRespons.IdentificationInformation.ShenasnamehNumber;
contractingParty.Authentication(apiRespons.BasicInformation.FirstName, apiRespons.BasicInformation.LastName,apiRespons.BasicInformation.FatherName,idNumber,apiRespons.IdentificationInformation.ShenasnameSeri,apiRespons.IdentificationInformation.ShenasnameSerial, apiRespons.IdentificationInformation.BirthDate,apiRespons.BasicInformation.GenderEnum);
_context.SaveChanges();
}
}