add unauthenticated edit support for contracting party phone and info in institution contracts

This commit is contained in:
2025-11-25 11:40:44 +03:30
parent 64bdbcbd2d
commit 8ec717916c
4 changed files with 96 additions and 1 deletions

View File

@@ -251,6 +251,35 @@ public class PersonalContractingParty : EntityBase
this.IsAuthenticated = true;
Phone = phone;
}
public void UnAuthenticateRealEdit(string fName, string lName, string fatherName,string idNumber,
string idNumberSeri, string idNumberSerial, string dateOfBirth, Gender gender,string phone)
{
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;
Phone = phone;
}
public void UnAuthenticateLegalEdit(string fName, string lName, string fatherName, string idNumber,
string idNumberSeri,
string idNumberSerial, string dateOfBirth, Gender gender, string phone)
{
CeoFName = fName;
CeoLName = lName;
this.FatherName = fatherName;
this.IdNumberSeri = idNumberSeri;
this.IdNumberSerial = idNumberSerial;
this.DateOfBirth = !string.IsNullOrWhiteSpace(dateOfBirth) ? dateOfBirth.ToGeorgianDateTime() : null;
this.IdNumber = idNumber;
this.Gender = gender;
Phone = phone;
}
public void RegisterComplete(string fatherName, string idNumberSeri, string idNumberSerial, DateTime dateOfBirth, Gender gender)
{

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using _0_Framework.Application.Enums;
using CompanyManagment.App.Contracts.InstitutionContractContactinfo;
namespace CompanyManagment.App.Contracts.InstitutionContract;
@@ -11,4 +12,15 @@ public class InstitutionContractExtensionWorkshopsRequest
public string Province { get; set; }
public string Address { get; set; }
public List<EditContactInfo> ContactInfos { get; set; }
/// <summary>
/// اطلاعات شخص حقیقی
/// </summary>
public CreateInstitutionContractRealPartyRequest RealParty { get; set; }
/// <summary>
/// اطلاعات شخص حقوقی
/// </summary>
public CreateInstitutionContractLegalPartyRequest LegalParty { get; set; }
public LegalType LegalType { get; set; }
}

View File

@@ -974,6 +974,13 @@ public class InstitutionContractApplication : IInstitutionContractApplication
throw new BadRequestException("امکان ایجاد قرارداد تکراری وجود ندارد");
}
}
if (!command.LegalParty.IsAuth)
{
var legalCommand = command.LegalParty;
existingContractingParty.UnAuthenticateLegalEdit(legalCommand.FName,legalCommand.LName,legalCommand.FatherName,legalCommand.IdNumber,existingContractingParty.IdNumberSeri,existingContractingParty.IdNumberSerial,
legalCommand.BirthDateFa,legalCommand.Gender,legalCommand.PhoneNumber);
}
}
else if (command.ContractingPartyLegalType == LegalType.Real)
{
@@ -990,8 +997,15 @@ public class InstitutionContractApplication : IInstitutionContractApplication
throw new BadRequestException("امکان ایجاد قرارداد تکراری وجود ندارد");
}
}
if (!command.RealParty.IsAuth)
{
var realCommand = command.RealParty;
existingContractingParty.UnAuthenticateRealEdit(realCommand.FName,realCommand.LName,realCommand.FatherName,realCommand.IdNumber,existingContractingParty.IdNumberSeri,existingContractingParty.IdNumberSerial,
realCommand.BirthDateFa,realCommand.Gender,realCommand.PhoneNumber);
}
}
await _institutionContractRepository.SaveChangesAsync();
PersonalContractingParty contractingParty;
if (existingContractingParty != null)
{

View File

@@ -42,6 +42,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.SignalR;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using MongoDB.Driver;
using OfficeOpenXml.Packaging.Ionic.Zip;
@@ -1961,13 +1962,51 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
public async Task<InstitutionContractExtensionWorkshopsResponse> GetExtensionWorkshops(
InstitutionContractExtensionWorkshopsRequest request)
{
var transaction = await _context.Database.BeginTransactionAsync();
switch (request.LegalType)
{
case LegalType.Legal:
if (!request.LegalParty.IsAuth)
{
var legalCommand = request.LegalParty;
var personalContractingParty = _context.PersonalContractingParties
.FirstOrDefault(x=>x.NationalId == legalCommand.NationalId);
if (personalContractingParty is {IsAuthenticated:false})
{
personalContractingParty.UnAuthenticateLegalEdit(legalCommand.FName, legalCommand.LName,
legalCommand.FatherName, legalCommand.IdNumber, personalContractingParty.IdNumberSeri,
personalContractingParty.IdNumberSerial, legalCommand.BirthDateFa, legalCommand.Gender,
legalCommand.PhoneNumber);
}
}
break;
case LegalType.Real:
if (!request.RealParty.IsAuth)
{
var realCommand = request.RealParty;
var personalContractingParty = _context.PersonalContractingParties
.FirstOrDefault(x => x.Nationalcode == realCommand.NationalCode);
if (personalContractingParty is {IsAuthenticated:false})
{
personalContractingParty.UnAuthenticateRealEdit(realCommand.FName, realCommand.LName,
realCommand.FatherName, realCommand.IdNumber, personalContractingParty.IdNumberSeri,
personalContractingParty.IdNumberSerial, realCommand.BirthDateFa, realCommand.Gender,
realCommand.PhoneNumber);
}
}
break;
}
await SaveChangesAsync();
await transaction.CommitAsync();
var extenstionTemp = await _institutionExtensionTemp.Find(x => x.Id == request.TempId)
.FirstOrDefaultAsync();
if (extenstionTemp == null)
{
throw new BadRequestException("دیتای درخواست شده نامعتبر است");
}
var prevInstitutionContracts = await _context.InstitutionContractSet
.Include(x => x.WorkshopGroup)
.ThenInclude(institutionContractWorkshopGroup => institutionContractWorkshopGroup.CurrentWorkshops)
@@ -2139,6 +2178,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
{
var institutionContractTemp = await _institutionExtensionTemp.Find(x => x.Id == request.TemporaryId)
.FirstOrDefaultAsync();
if (institutionContractTemp == null)
throw new BadRequestException("اطلاعات وارد شده نامعتبر است");
var selectedDuration = institutionContractTemp.Duration switch