Recovery Data Completed

This commit is contained in:
SamSys
2025-05-20 22:15:06 +03:30
parent 8078d8bfdd
commit 9393993755
14 changed files with 181 additions and 31 deletions

View File

@@ -20,6 +20,7 @@ public interface IInsuranceJobRepositpry:IRepository<long, InsuranceJob>
OperationResult CreateInsuranceJob(CreateInsuranceJob command); OperationResult CreateInsuranceJob(CreateInsuranceJob command);
List<(long id, string date)> GetOldYersInsuranceItemIds(); List<(long id, string date)> GetOldYersInsuranceItemIds();
OperationResult CopyFromLastYear(CopyFromLastYearViewModel command); OperationResult CopyFromLastYear(CopyFromLastYearViewModel command);
OperationResult RecoveryOldData1403();
OperationResult Remove(long id); OperationResult Remove(long id);
OperationResult EditInsuranceJob(EditInsuranceJob command); OperationResult EditInsuranceJob(EditInsuranceJob command);

View File

@@ -16,6 +16,7 @@ public interface IInsuranceJobItemRepositpry : IRepository<long, InsuranceJobIte
DetailsInsuranceJobItem GetDetails(long id); DetailsInsuranceJobItem GetDetails(long id);
List<InsuranceJobItemViewModel> GetInsuranceJobItemByInsuranceJobId(long Id, string year, string month); List<InsuranceJobItemViewModel> GetInsuranceJobItemByInsuranceJobId(long Id, string year, string month);
List<InsuranceJobItemViewModel> Search(InsuranceJobItemSearchModel searchModel); List<InsuranceJobItemViewModel> Search(InsuranceJobItemSearchModel searchModel);
InsuranceJobItemViewModel GetInsuranceJobItemByInsuranceJobIdForFixedSalary(long insuranceJobId, long jobId); InsuranceJobItemViewModel GetInsuranceJobItemByInsuranceJobIdForFixedSalary(long insuranceJobId, long jobId,
string year, string month);
} }

View File

@@ -12,6 +12,7 @@ public interface IInsuranceJobApplication
{ {
List<(long id, string date)> GetOldYersInsuranceItemIds(); List<(long id, string date)> GetOldYersInsuranceItemIds();
OperationResult CopyFromLastYear(CopyFromLastYearViewModel command); OperationResult CopyFromLastYear(CopyFromLastYearViewModel command);
OperationResult RecoveryOldData1403();
OperationResult Create(CreateInsuranceJob command); OperationResult Create(CreateInsuranceJob command);
OperationResult Edit(EditInsuranceJob command); OperationResult Edit(EditInsuranceJob command);
EditInsuranceJob GetDetails(long id,string year, string month); EditInsuranceJob GetDetails(long id,string year, string month);

View File

@@ -29,6 +29,11 @@ public class InsuranceJobApplication: IInsuranceJobApplication
return _insuranceJobRepositpry.CopyFromLastYear(command); return _insuranceJobRepositpry.CopyFromLastYear(command);
} }
public OperationResult RecoveryOldData1403()
{
return _insuranceJobRepositpry.RecoveryOldData1403();
}
public OperationResult Create(CreateInsuranceJob command) public OperationResult Create(CreateInsuranceJob command)
{ {
var opration = new OperationResult(); var opration = new OperationResult();

View File

@@ -1718,7 +1718,7 @@ public class InsuranceListApplication: IInsuranceListApplication
var searchModel = new InsuranceJobItemSearchModel(); var searchModel = new InsuranceJobItemSearchModel();
searchModel.InsuranceJobId = (long)insuranceJobId; searchModel.InsuranceJobId = (long)insuranceJobId;
var JobItem = _insuranceJobItemRepository.GetInsuranceJobItemByInsuranceJobIdForFixedSalary((long)insuranceJobId, jobId); var JobItem = _insuranceJobItemRepository.GetInsuranceJobItemByInsuranceJobIdForFixedSalary((long)insuranceJobId, jobId, year, month);
if (JobItem != null && JobItem.Id != 0) if (JobItem != null && JobItem.Id != 0)
{ {

View File

@@ -124,10 +124,11 @@ public class InsuranceJobItemRepository : RepositoryBase<long, InsuranceJobItem>
} }
public InsuranceJobItemViewModel GetInsuranceJobItemByInsuranceJobIdForFixedSalary(long insuranceJobId, long jobId) public InsuranceJobItemViewModel GetInsuranceJobItemByInsuranceJobIdForFixedSalary(long insuranceJobId, long jobId, string year, string month)
{ {
var searcheDate = ($"{year}/{month}/01").ToGeorgianDateTime();
var insuranceJobItemViewModel = new InsuranceJobItemViewModel(); var insuranceJobItemViewModel = new InsuranceJobItemViewModel();
var insuranceJobItems = _context.InsuranceJobItems.Where(x => x.InsuranceJobId == insuranceJobId).ToList(); var insuranceJobItems = _context.InsuranceJobItems.Where(i => i.InsuranceJobId == insuranceJobId && i.StartDate <= searcheDate && i.EndDate >= searcheDate).ToList();
var insuranceJobItemIds = insuranceJobItems.Select(x => x.id).ToList(); var insuranceJobItemIds = insuranceJobItems.Select(x => x.id).ToList();
var jobAndJob = _context.InsuranceJobAndJobsSet var jobAndJob = _context.InsuranceJobAndJobsSet
.Where(x => insuranceJobItemIds.Contains(x.InsuranceJobItemId) && x.JobId == jobId).FirstOrDefault(); .Where(x => insuranceJobItemIds.Contains(x.InsuranceJobItemId) && x.JobId == jobId).FirstOrDefault();

View File

@@ -20,13 +20,15 @@ namespace CompanyManagment.EFCore.Repository;
public class InsuranceJobRepository : RepositoryBase<long, InsuranceJob>, IInsuranceJobRepositpry public class InsuranceJobRepository : RepositoryBase<long, InsuranceJob>, IInsuranceJobRepositpry
{ {
private readonly CompanyContext _context; private readonly CompanyContext _context;
private readonly TestDbContext _testDbContext;
private readonly IInsuranceJobItemRepositpry _insuranceJobItemRepositpry; private readonly IInsuranceJobItemRepositpry _insuranceJobItemRepositpry;
private readonly IPercentageRepository _percentageRepository; private readonly IPercentageRepository _percentageRepository;
public InsuranceJobRepository(CompanyContext context, IInsuranceJobItemRepositpry insuranceJobItemRepositpry, IPercentageRepository percentageRepository) : base(context) public InsuranceJobRepository(CompanyContext context, IInsuranceJobItemRepositpry insuranceJobItemRepositpry, IPercentageRepository percentageRepository, TestDbContext testDbContext) : base(context)
{ {
_context = context; _context = context;
_insuranceJobItemRepositpry = insuranceJobItemRepositpry; _insuranceJobItemRepositpry = insuranceJobItemRepositpry;
_percentageRepository = percentageRepository; _percentageRepository = percentageRepository;
_testDbContext = testDbContext;
} }
public EditInsuranceJob GetDetails(long id, string year, string month) public EditInsuranceJob GetDetails(long id, string year, string month)
@@ -274,6 +276,65 @@ public class InsuranceJobRepository : RepositoryBase<long, InsuranceJob>, IInsur
} }
public OperationResult RecoveryOldData1403()
{
OperationResult result = new OperationResult();
using (var transaction = _context.Database.BeginTransaction())
{
try
{
var res = _testDbContext.InsuranceJobItems.Include(x => x.InsuranceJobAndJobs).ToList();
foreach (var item in res)
{
var createItem = new InsuranceJobItem(item.PercentageLessThan, 0, item.PercentageMoreThan, 0,
item.InsuranceJobId, item.StartDate, item.EndDate);
_context.InsuranceJobItems.Add(createItem);
_context.SaveChanges();
List<InsuranceJobAndJobs> insuranceJobAndJobsList = new List<InsuranceJobAndJobs>();
foreach (var jobItem in item.InsuranceJobAndJobs)
{
var insuranceJobAndJobsObj = new InsuranceJobAndJobs();
insuranceJobAndJobsObj.JobId = jobItem.JobId;
insuranceJobAndJobsObj.InsuranceJobItemId = createItem.id;
insuranceJobAndJobsList.Add(insuranceJobAndJobsObj);
}
_context.InsuranceJobAndJobsSet.AddRange(insuranceJobAndJobsList);
_context.SaveChanges();
if (!_percentageRepository.Exists(x => x.Percent == item.PercentageLessThan))
{
var percentage = new Percentage(item.PercentageLessThan);
_percentageRepository.Create(percentage);
}
if (!_percentageRepository.Exists(x => x.Percent == item.PercentageMoreThan))
{
var percentage2 = new Percentage(item.PercentageMoreThan);
_percentageRepository.Create(percentage2);
}
_percentageRepository.SaveChanges();
}
transaction.Commit();
result.IsSuccedded = true;
result.Message = "حذف اطلاعات با موفقیت انجام شد";
}
catch (Exception ex)
{
transaction.Rollback();
result.Failed("ثبت اطلاعات با خطا مواجه شد");
}
}
return result;
}
public OperationResult Remove(long id) public OperationResult Remove(long id)
{ {
OperationResult result = new OperationResult(); OperationResult result = new OperationResult();

View File

@@ -0,0 +1,39 @@
using Company.Domain.InsuranceJobItemAgg;
using Company.Domain.InsurancJobAgg;
using Company.Domain.RollCallAgg;
using CompanyManagment.EFCore.Mapping;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CompanyManagment.EFCore
{
public class TestDbContext : DbContext
{
public DbSet<InsuranceJobItem> InsuranceJobItems { get; set; }
public DbSet<InsuranceJob> InsuranceJobs { get; set; }
public TestDbContext(DbContextOptions<TestDbContext> options) : base(options)
{
}
public TestDbContext()
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
var assembly = typeof(PersonalContractingpartyMapping).Assembly;
modelBuilder.ApplyConfigurationsFromAssembly(assembly);
base.OnModelCreating(modelBuilder);
}
}
}

View File

@@ -0,0 +1,21 @@
using Company.Domain.InsuranceJobItemAgg;
using Company.Domain.InsurancJobAgg;
using CompanyManagment.App.Contracts.InsuranceJob;
using CompanyManagment.Application;
using CompanyManagment.EFCore;
using CompanyManagment.EFCore.Repository;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
namespace PersonalContractingParty.Config;
public class TestDbBootStrapper
{
public static void Configure(IServiceCollection services, string connectionString)
{
services.AddTransient<IInsuranceJobApplication, InsuranceJobApplication>();
services.AddTransient<IInsuranceJobRepositpry, InsuranceJobRepository>();
services.AddTransient<IInsuranceJobItemRepositpry, InsuranceJobItemRepository>();
services.AddDbContext<TestDbContext>(x => x.UseSqlServer(connectionString));
}
}

View File

@@ -10,11 +10,20 @@
@*<a href="#showmodal=@Url.Page("/Company/InsuranceJob/Index","CreateInformation")" class="btn btn-rounded waves-effect waves-light m-b-5 btn-show-modal"><i class="fa fa-user-plus" ></i> ثبت اطلاعات مقطوع </a>*@ @*<a href="#showmodal=@Url.Page("/Company/InsuranceJob/Index","CreateInformation")" class="btn btn-rounded waves-effect waves-light m-b-5 btn-show-modal"><i class="fa fa-user-plus" ></i> ثبت اطلاعات مقطوع </a>*@
</p> </p>
<p class="pull-right"> <p class="pull-right">
<a href="#showmodal=@Url.Page("/Company/InsuranceJob/Index", "CopyFromLastYear")" class="btn btn-rounded waves-effect waves-light m-b-5 btn-show-modal"><i class="fa fa-user-plus"></i> کپی از اصناف سال قبل </a> <a href="#showmodal=@Url.Page("/Company/InsuranceJob/Index", "CopyFromLastYear")" class="btn btn-rounded waves-effect waves-light m-b-5 btn-show-modal"><i class="fa fa-user-plus"></i> کپی از اصناف سال قبل </a>
@*<a href="#showmodal=@Url.Page("/Company/InsuranceJob/Index","CreateInformation")" class="btn btn-rounded waves-effect waves-light m-b-5 btn-show-modal"><i class="fa fa-user-plus" ></i> ثبت اطلاعات مقطوع </a>*@ @*<a href="#showmodal=@Url.Page("/Company/InsuranceJob/Index","CreateInformation")" class="btn btn-rounded waves-effect waves-light m-b-5 btn-show-modal"><i class="fa fa-user-plus" ></i> ثبت اطلاعات مقطوع </a>*@
</p> </p>
<p class="pull-right">
<a asp-page="/Company/InsuranceJob/Index" asp-page-handler="OldDataRecovery1403" class="btn btn-rounded waves-effect waves-light m-b-5 btn-show-modal"><i class="fa fa-user-plus"></i> ریکاوری دیتای سال 1403 </a>
@*<a href="#showmodal=@Url.Page("/Company/InsuranceJob/Index","CreateInformation")" class="btn btn-rounded waves-effect waves-light m-b-5 btn-show-modal"><i class="fa fa-user-plus" ></i> ثبت اطلاعات مقطوع </a>*@
</p>
</div> </div>
<div class="col-sm-12"> <div class="col-sm-12">
<div class="panel-group panel-group-joined" id="accordion-test"> <div class="panel-group panel-group-joined" id="accordion-test">

View File

@@ -82,17 +82,23 @@ public class IndexModel : PageModel
return new JsonResult(res); return new JsonResult(res);
} }
//public async Task<IActionResult> OnPostJobListByText(string textSearch) public IActionResult OnGetOldDataRecovery1403()
//{ {
// var jobs = _jobApplication.GetJobListByText(textSearch); var res = _insuranceJobApplication.RecoveryOldData1403();
// return new JsonResult(new
// {
// IsSuccedded = true,
// mylist = jobs,
// });
//}
public IActionResult OnPostJobListByText(string textSearch) return new JsonResult(res);
}
//public async Task<IActionResult> OnPostJobListByText(string textSearch)
//{
// var jobs = _jobApplication.GetJobListByText(textSearch);
// return new JsonResult(new
// {
// IsSuccedded = true,
// mylist = jobs,
// });
//}
public IActionResult OnPostJobListByText(string textSearch)
{ {
var jobs = _jobApplication.GetJobListByText(textSearch); var jobs = _jobApplication.GetJobListByText(textSearch);

View File

@@ -65,20 +65,20 @@ public class IndexModel : PageModel
var searchModelPercentage = new PercentageSearchModel(); var searchModelPercentage = new PercentageSearchModel();
var percentageList = _percentageApplication.Search(searchModelPercentage); var percentageList = _percentageApplication.Search(searchModelPercentage);
var percentagIds = dateSalaryItems.Select(x => x.PercentageId).ToList(); //var percentagIds = dateSalaryItems.Select(x => x.PercentageId).ToList();
var percentages = percentageList.Where(x => !percentagIds.Contains(x.Id)).ToList(); //var percentages = percentageList.Where(x => !percentagIds.Contains(x.Id)).ToList();
foreach (var item in percentages) //foreach (var item in percentages)
{ //{
var obj = new DateSalaryItemViewModel(); // var obj = new DateSalaryItemViewModel();
obj.Percent = item.Percent; // obj.Percent = item.Percent;
obj.PercentageId = item.Id; // obj.PercentageId = item.Id;
obj.Salary = null; // obj.Salary = null;
obj.DateSalaryId = id; // obj.DateSalaryId = id;
obj.Id = 0; // obj.Id = 0;
obj.StrSalary = ""; // obj.StrSalary = "";
dateSalaryItems.Add(obj); // dateSalaryItems.Add(obj);
} //}
var list = new CreateDateSalaryForInsuranceJob(); var list = new CreateDateSalaryForInsuranceJob();
list.EndDateFa = dateSalary.EndDateFa; list.EndDateFa = dateSalary.EndDateFa;

View File

@@ -34,7 +34,9 @@ builder.Services.AddRazorPages()
builder.Services.AddHttpContextAccessor(); builder.Services.AddHttpContextAccessor();
builder.Services.AddHttpClient("holidayApi", c => c.BaseAddress = new System.Uri("https://api.github.com")); builder.Services.AddHttpClient("holidayApi", c => c.BaseAddress = new System.Uri("https://api.github.com"));
var connectionString = builder.Configuration.GetConnectionString("MesbahDb"); var connectionString = builder.Configuration.GetConnectionString("MesbahDb");
var connectionStringTestDb = builder.Configuration.GetConnectionString("TestDb");
PersonalBootstrapper.Configure(builder.Services, connectionString); PersonalBootstrapper.Configure(builder.Services, connectionString);
TestDbBootStrapper.Configure(builder.Services, connectionStringTestDb);
AccountManagementBootstrapper.Configure(builder.Services, connectionString); AccountManagementBootstrapper.Configure(builder.Services, connectionString);
WorkFlowBootstrapper.Configure(builder.Services, connectionString); WorkFlowBootstrapper.Configure(builder.Services, connectionString);
QueryBootstrapper.Configure(builder.Services); QueryBootstrapper.Configure(builder.Services);

View File

@@ -15,11 +15,14 @@
//"MesbahDb": "Data Source=171.22.24.15;Initial Catalog=mesbah_db;Persist Security Info=False;User ID=ir_db;Password=R2rNp[170]is[3019]#@ATt;TrustServerCertificate=true;" //"MesbahDb": "Data Source=171.22.24.15;Initial Catalog=mesbah_db;Persist Security Info=False;User ID=ir_db;Password=R2rNp[170]is[3019]#@ATt;TrustServerCertificate=true;"
//local //local
"MesbahDb": "Data Source=.;Initial Catalog=mesbah_db;Integrated Security=True;TrustServerCertificate=true;" "MesbahDb": "Data Source=.;Initial Catalog=mesbah_db;Integrated Security=True;TrustServerCertificate=true;",
"TestDb": "Data Source=.;Initial Catalog=TestDb;Integrated Security=True;TrustServerCertificate=true;"
//mahan Docker //mahan Docker
//"MesbahDb": "Data Source=localhost,5069;Initial Catalog=mesbah_db;User ID=sa;Password=YourPassword123;TrustServerCertificate=True;" //"MesbahDb": "Data Source=localhost,5069;Initial Catalog=mesbah_db;User ID=sa;Password=YourPassword123;TrustServerCertificate=True;"
}, },
"GoogleRecaptchaV3": { "GoogleRecaptchaV3": {
"SiteKey": "6Lfhp_AnAAAAAB79WkrMoHd1k8ir4m8VvfjE7FTH", "SiteKey": "6Lfhp_AnAAAAAB79WkrMoHd1k8ir4m8VvfjE7FTH",
"SecretKey": "6Lfhp_AnAAAAANjDDY6DPrbbUQS7k6ZCRmrVP5Lb" "SecretKey": "6Lfhp_AnAAAAANjDDY6DPrbbUQS7k6ZCRmrVP5Lb"