using System; using System.Collections.Generic; using _0_Framework.Application; using Company.Domain.InsuranceJobItemAgg; using Company.Domain.InsurancJobAgg; using CompanyManagment.App.Contracts.InsuranceJob; namespace CompanyManagment.Application; public class InsuranceJobApplication: IInsuranceJobApplication { private readonly IInsuranceJobRepositpry _insuranceJobRepositpry; private readonly IInsuranceJobItemRepositpry _insuranceJobItemRepositpry; public InsuranceJobApplication(IInsuranceJobRepositpry insuranceJobRepositpry, IInsuranceJobItemRepositpry insuranceJobItemRepositpry) { _insuranceJobRepositpry = insuranceJobRepositpry; _insuranceJobItemRepositpry = insuranceJobItemRepositpry; } public List<(long id, string date)> GetOldYersInsuranceItemIds() { return _insuranceJobRepositpry.GetOldYersInsuranceItemIds(); } public OperationResult CopyFromLastYear(CopyFromLastYearViewModel command) { return _insuranceJobRepositpry.CopyFromLastYear(command); } public OperationResult RecoveryOldData1403() { return _insuranceJobRepositpry.RecoveryOldData1403(); } public OperationResult Create(CreateInsuranceJob command) { var opration = new OperationResult(); if (string.IsNullOrWhiteSpace(command.EconomicCode)) return opration.Failed("کد اقتصادی نمی تواند خالی باشد"); if (string.IsNullOrWhiteSpace(command.InsuranceJobTitle)) return opration.Failed("عنوان صنف و درجه نمی تواند خالی باشد"); if (_insuranceJobRepositpry.Exists(x => x.InsuranceJobTitle == command.InsuranceJobTitle)) return opration.Failed("عنوان صنف و درجه تکراری است"); if (command.InsuranceJobItemId == 0) return opration.Failed("بازه را انتخاب کنید"); //if (_insuranceJobRepositpry.Exists(x => x.EconomicCode == command.EconomicCode)) // return opration.Failed("کد اقتصادی تکراری است"); try { if (command.InsuranceJobItems== null) return opration.Failed("لطفا تمامی فیلد ها را تکمیل کنید."); foreach (var item in command.InsuranceJobItems) { // ----- شرط قبل از تغییرات ---- //if (string.IsNullOrWhiteSpace(item.SalaeyLessThanString) || // string.IsNullOrWhiteSpace(item.SalaryMoreThanString) || // item.PercentageLessThan > 0 && item.PercentageMoreThan > 0 || // (item.JobIds == null || item.JobIds.Count == 0)) if (item.PercentageLessThan == 0 || item.PercentageMoreThan == 0 || item.JobIds == null || (item.JobIds != null && item.JobIds.Count == 0)) { return opration.Failed("لطفا تمامی فیلد ها را تکمیل کنید"); break; } } opration = _insuranceJobRepositpry.CreateInsuranceJob(command); //var insuranceJobObj = new InsuranceJob(command.InsuranceJobTitle, command.YearlySalaryId, command.EconomicCode, command.Year); //_insuranceJobRepositpry.Create(insuranceJobObj); //_insuranceJobRepositpry.SaveChanges(); //foreach (var item in command.InsuranceJobItems) //{ // item.SalaryMoreThan = item.SalaryMoreThanString.MoneyToDouble(); // item.SalaeyLessThan = item.SalaeyLessThanString.MoneyToDouble(); // item.InsuranceJobId = insuranceJobObj.id; // _insuranceJobItemRepositpry.CreateInsuranceJobItem(item); // _insuranceJobItemRepositpry.SaveChanges(); //} return opration; } catch (Exception er) { return opration.Failed("ثبت با خطا مواجه شد."); } } public OperationResult Edit(EditInsuranceJob command) { var opration = new OperationResult(); if (string.IsNullOrWhiteSpace(command.EconomicCode)) return opration.Failed("کد اقتصادی نمی تواند خالی باشد"); if (string.IsNullOrWhiteSpace(command.InsuranceJobTitle)) return opration.Failed("عنوان صنف و درجه نمی تواند خالی باشد"); if (_insuranceJobRepositpry.Exists(x => x.InsuranceJobTitle == command.InsuranceJobTitle && x.id!=command.Id)) return opration.Failed("عنوان صنف و درجه تکراری است"); //if (_insuranceJobRepositpry.Exists(x => x.EconomicCode == command.EconomicCode && x.id != command.Id)) // return opration.Failed("کد اقتصادی تکراری است"); try { if (command.InsuranceJobItems == null) return opration.Failed("لطفا تمامی فیلد ها را تکمیل کنید."); foreach (var item in command.InsuranceJobItems) { if (item.PercentageLessThan == 0 || item.PercentageMoreThan == 0 || item.JobIds == null || (item.JobIds != null && item.JobIds.Count == 0)) { return opration.Failed("لطفا تمامی فیلد ها را تکمیل کنید"); break; } } opration = _insuranceJobRepositpry.EditInsuranceJob(command); return opration; } catch (Exception er) { return opration.Failed("ویرایش با خطا مواجه شد."); } } public EditInsuranceJob GetDetails(long id, string year, string month) { return _insuranceJobRepositpry.GetDetails(id, year,month); } public List GetInsurancJob() { return _insuranceJobRepositpry.GetInsurancJob(); } public List Search(InsuranceJobSearchModel searchModel) { return _insuranceJobRepositpry.Search(searchModel); } public OperationResult Remove(long id) { return _insuranceJobRepositpry.Remove(id); } }