diff --git a/Company.Domain/ContractAgg/IContractRepository.cs b/Company.Domain/ContractAgg/IContractRepository.cs index fbffa304..585d9e13 100644 --- a/Company.Domain/ContractAgg/IContractRepository.cs +++ b/Company.Domain/ContractAgg/IContractRepository.cs @@ -51,6 +51,7 @@ public interface IContractRepository : IRepository Task> GetContractListForClient(GetContractListForClientRequest searchModel); + Task> PrintAllAsync(List ids); #endregion #region NewChangeByHeydari @@ -66,6 +67,7 @@ public interface IContractRepository : IRepository ContractViweModel GetByWorkshopIdEmployeeIdInDates(long workshopId, long employeeId, DateTime startOfMonth, DateTime endOfMonth); List GetByWorkshopIdInDates(long workshopId, DateTime contractStart, DateTime contractEnd); #endregion + } diff --git a/CompanyManagment.App.Contracts/Contract/IContractApplication.cs b/CompanyManagment.App.Contracts/Contract/IContractApplication.cs index b6038104..38c2fc2b 100644 --- a/CompanyManagment.App.Contracts/Contract/IContractApplication.cs +++ b/CompanyManagment.App.Contracts/Contract/IContractApplication.cs @@ -3,6 +3,8 @@ using System.Collections.Generic; using _0_Framework.Application; using CompanyManagment.App.Contracts.Workshop; using System.Threading.Tasks; +using _0_Framework.Application.Enums; + namespace CompanyManagment.App.Contracts.Contract; public interface IContractApplication @@ -74,4 +76,71 @@ public interface IContractApplication public class ContractPrintViewModel { + public string ContractNo { get; set; } + public ContractPrintEmployerViewModel Employer { get; set; } + public ContractPrintEmployeeViewModel Employee { get; set; } + public ContractPrintTypeOfContractViewModel TypeOfContract { get; set; } + public ContractPrintFeesViewModel Fees { get; set; } + public string ConditionAndDetials { get; set; } + + +} + +public class ContractPrintFeesViewModel +{ + public string DailyWage { get; set; } + public string FamilyAllowance { get; set; } + public string ConsumableItems { get; set; } + public string HousingAllowance { get; set; } +} + +public class ContractPrintTypeOfContractViewModel +{ + public string ContractType { get; set; } + public string JobName { get; set; } + public string SetContractDate { get; set; } + public string ContarctStart { get; set; } + public string ContractEnd { get; set; } + public string WorkingHoursWeekly { get; set; } + public List WorkshopAddress { get; set; } + + + +} + +public class ContractPrintEmployeeViewModel +{ + public string FullName { get; set; } + public string NationalCode { get; set; } + public string IdNumber { get; set; } + public string DateOfBirth { get; set; } + public string FatherName { get; set; } + public string LevelOfEducation { get; set; } + public string Address { get; set; } + + +} + +public class ContractPrintEmployerViewModel +{ + public LegalType LegalType { get; set; } + public ContractPrintRealEmployerViewModel RealEmployer { get; set; } + public ContractPrintLegalEmployerViewModel LegalEmployer { get; set; } + public string WorkshopName { get; set; } + public string Address { get; set; } + +} + +public class ContractPrintLegalEmployerViewModel +{ + public string CompanyName { get; set; } + public string NationalId { get; set; } + public string RegisterId { get; set; } +} + +public class ContractPrintRealEmployerViewModel +{ + public string FullName { get; set; } + public string NationalCode { get; set; } + public string IdNumber { get; set; } } \ No newline at end of file diff --git a/CompanyManagment.Application/ContractApplication.cs b/CompanyManagment.Application/ContractApplication.cs index 48acc0bf..c8ed4524 100644 --- a/CompanyManagment.Application/ContractApplication.cs +++ b/CompanyManagment.Application/ContractApplication.cs @@ -2712,7 +2712,9 @@ public class ContractApplication : IContractApplication var emp = workshopEmpList.Where(x => x.WorkshopId == res.WorkshopIds) .Select(x => x.EmployerId).ToList(); + res.Employers = _employerRepository.GetEmployers(emp); + var workshopSelect = _workshopApplication.GetDetails(res.WorkshopIds); var workshop = new WorkshopViewModel() { @@ -3112,14 +3114,14 @@ public class ContractApplication : IContractApplication return await _contractRepository.GetContractListForClient(searchModel); } - public Task PrintOneAsync(long id) + public async Task PrintOneAsync(long id) { - throw new NotImplementedException(); + return (await _contractRepository.PrintAllAsync([id])).FirstOrDefault(); } - public Task> PrintAllAsync(List ids) + public async Task> PrintAllAsync(List ids) { - throw new NotImplementedException(); + return await _contractRepository.PrintAllAsync(ids); } #endregion diff --git a/CompanyManagment.EFCore/Repository/ContractRepository.cs b/CompanyManagment.EFCore/Repository/ContractRepository.cs index a998860b..08a8a43f 100644 --- a/CompanyManagment.EFCore/Repository/ContractRepository.cs +++ b/CompanyManagment.EFCore/Repository/ContractRepository.cs @@ -5,6 +5,7 @@ using System.Globalization; using System.Linq; using System.Threading.Tasks; using _0_Framework.Application; +using _0_Framework.Application.Enums; using _0_Framework.Exceptions; using _0_Framework.InfraStructure; using Company.Domain.ContractAgg; @@ -1621,6 +1622,88 @@ public class ContractRepository : RepositoryBase, IContractRepos return result; } + public async Task> PrintAllAsync(List ids) + { + var query =await _context.Contracts.Include(x => x.Employer) + .Include(x => x.Employee).Where(x => ids.Contains(x.id)) + .ToListAsync(); + + var workshopIds = query.Select(x => x.WorkshopIds).Distinct().ToList(); + + var workshops = await _context.Workshops + .Where(x => workshopIds.Contains(x.id)) + .ToListAsync(); + + List exceptionWorkshops = [516,63,38,39]; + var res = query.Select(x => + { + var workshop = workshops.FirstOrDefault(w => w.id == x.WorkshopIds); + + var employerRes = new ContractPrintEmployerViewModel() + { + WorkshopName = workshop!.WorkshopName, + Address =$"{workshop.State} - {workshop.City} - {workshop.Address}", + LegalType = x.Employer.IsLegal == "حقیقی" ? LegalType.Real : LegalType.Legal, + LegalEmployer = x.Employer.IsLegal == "حقیقی" + ? null + : new ContractPrintLegalEmployerViewModel() + { + NationalId = x.Employer.NationalId, + RegisterId = x.Employer.RegisterId, + CompanyName = x.Employer.LName, + }, + RealEmployer = x.Employer.IsLegal == "حقیقی" + ? new ContractPrintRealEmployerViewModel() + { + FullName = x.Employer.FullName, + IdNumber = x.Employer.IdNumber, + NationalCode = x.Employer.Nationalcode + } + : null, + + }; + var employeeRes = new ContractPrintEmployeeViewModel() + { + Address =$"{x.Employee.State} - {x.Employee.City} - {x.Employee.Address}" , + FullName = x.Employee.FullName, + IdNumber = x.Employee.IdNumber, + NationalCode = x.Employee.NationalCode, + DateOfBirth = x.Employee.DateOfBirth.ToFarsi(), + FatherName = x.Employee.FatherName, + LevelOfEducation = x.Employee.LevelOfEducation + }; + + var typeOfContract = new ContractPrintTypeOfContractViewModel() + { + ContarctStart = x.ContarctStart.ToFarsi(), + ContractEnd = x.ContractEnd.ToFarsi(), + JobName = x.JobType, + ContractType = x.ContractType, + SetContractDate = x.SetContractDate.ToFarsi(), + WorkingHoursWeekly = WeeklyHourConvertor(x.WorkingHoursWeekly), + WorkshopAddress = [x.WorkshopAddress1, x.WorkshopAddress2], + }; + ContractPrintFeesViewModel fees= new ContractPrintFeesViewModel() + { + DailyWage = x.DayliWage, + FamilyAllowance = x.FamilyAllowance, + HousingAllowance = x.HousingAllowance, + ConsumableItems = x.ConsumableItems, + }; + return new ContractPrintViewModel() + { + Employer = employerRes, + Employee = employeeRes, + TypeOfContract = typeOfContract, + Fees = fees, + ContractNo = x.ContractNo, + ConditionAndDetials = exceptionWorkshops.Contains(x.WorkshopIds) ? "بر اساس ماده 190 قانون کار جمهوری اسلامی ایران ، پرسنل اقرار مینماید کلیه مبالغ پیش بینی شده در قانون کار را وفق قرارداد منعقده دریافت مینماید. این مبالغ قسمتی بصورت مستقیم از سوی کارفرما و قسمتی بر اساس شرایط کارگاه از محل درآمد حاصله از مشتری اخذ میگردد . با توجه به شرایط کارگاه کلیه مبالغ بصورت واریز به حساب و وجه نقد رایج کشور ، تواما به پرسنل پرداخت میگردد. امضا تصفیه حساب دارای مبالغ ، توسط پرسنل نشانگر تصفیه قطعی ایشان میباشد.": "", + + }; + }).ToList(); + return res; + } + #endregion #region NewChangeByHeydari diff --git a/ServiceHost/Areas/Client/Controllers/ContractController.cs b/ServiceHost/Areas/Client/Controllers/ContractController.cs index 95d24437..523289e1 100644 --- a/ServiceHost/Areas/Client/Controllers/ContractController.cs +++ b/ServiceHost/Areas/Client/Controllers/ContractController.cs @@ -24,4 +24,11 @@ public class ContractController:ClientBaseController return res; } + [HttpGet("print/{id}")] + public async Task> PrintOne(long id) + { + var res = await _contractApplication.PrintOneAsync(id); + return res; + } + } \ No newline at end of file