using System.Collections.Generic; using _0_Framework.Application; using Company.Domain.TaxJobCategoryAgg; using Company.Domain.TaxLeftWorkCategoryAgg; using Company.Domain.TaxLeftWorkItemAgg; using CompanyManagment.App.Contracts.TaxLeftWorkCategory; using CompanyManagment.App.Contracts.TaxLeftWorkItem; namespace CompanyManagment.Application; public class TaxLeftWorkCategoryApplication : ITaxLeftWorkCategoryApplication { private readonly ITaxLeftWorkCategoryRepository _taxLeftWorkCategoryRepository; private readonly ITaxJobCategoryRepository _taxJobCategoryRepository; private readonly ITaxLeftWorkItemApplication _taxLeftWorkItemApplication; public TaxLeftWorkCategoryApplication(ITaxLeftWorkCategoryRepository taxLeftWorkCategoryRepository, ITaxJobCategoryRepository taxJobCategoryRepository, ITaxLeftWorkItemApplication taxLeftWorkItemApplication) { _taxLeftWorkCategoryRepository = taxLeftWorkCategoryRepository; _taxJobCategoryRepository = taxJobCategoryRepository; _taxLeftWorkItemApplication = taxLeftWorkItemApplication; } public OperationResult Create(CreateTaxLeftWorkCategory command) { var op = new OperationResult(); if (command.WorkshopId == 0 || string.IsNullOrWhiteSpace(command.WorkshopName)) return op.Failed("کارگاه مشخص نشده است"); if (command.EmployeeId == 0 || string.IsNullOrWhiteSpace(command.EmployeeName)) return op.Failed("پرسنل مشخص نشده است"); if (_taxLeftWorkCategoryRepository.Exists(x => x.WorkshopId == command.WorkshopId)) return op.Failed("کارگاه تکراری است"); if (string.IsNullOrWhiteSpace(command.JobTitle)) return op.Failed("سمت را وارد کنید"); if (string.IsNullOrWhiteSpace(command.JobCategoryCode)) return op.Failed("رسته را مشخص کنید"); if (string.IsNullOrWhiteSpace(command.TypeOfEmployment)) return op.Failed("نوع استخدام را مشخص کنید"); if (string.IsNullOrWhiteSpace(command.TypeOfInsurance)) return op.Failed("نوع بیمه را مشخص کنید"); if (string.IsNullOrWhiteSpace(command.TaxExempt)) return op.Failed("وضعیت معافیت مالیاتی را مشخص کنید"); if (string.IsNullOrWhiteSpace(command.Country)) return op.Failed("کشور را مشخص کنید"); if (string.IsNullOrWhiteSpace(command.EmploymentLocationStatus)) return op.Failed("وضعیت محل خدمت را مشخص کنید"); if (string.IsNullOrWhiteSpace(command.BudgetLawExceptions)) return op.Failed("استثنائات قانون بودجه را مشخص کنید"); if (string.IsNullOrWhiteSpace(command.PaymentType)) return op.Failed("نوع پرداخت را مشخص کنید"); if (string.IsNullOrWhiteSpace(command.CurrencyType)) return op.Failed("نوع ارز را مشخص کنید"); if (string.IsNullOrWhiteSpace(command.ExchangeRate)) return op.Failed("نرخ تسعیر را مشخص کنید"); if (command.TaxLeftWorkItemViewModels.Count == 0 || command.TaxLeftWorkItemViewModels == null) return op.Failed("هیچ شروع بکاری وارد نشده است"); var checkDatesErr = TaxLeftWorkItemsCheckError(command.TaxLeftWorkItemViewModels); if (!checkDatesErr.IsSuccedded) return op.Failed(checkDatesErr.Message); var jobCatId = _taxJobCategoryRepository.GetTaxJobCategoryByCode(command.JobCategoryCode); var createTaxLeftWorkCategory = new TaxLeftWorkCategory(command.RetirementDate,command.JobTitle,command.JobCategoryCode,jobCatId.Id, command.TypeOfEmployment,command.EmploymentLocationStatus,command.TypeOfInsurance,command.InsuranceName,command.InsuranceBranch, command.TaxExempt,command.BudgetLawExceptions,command.PaymentType,command.CurrencyType,command.ExchangeRate,command.WorkshopId, command.WorkshopName,command.EmployeeId,command.EmployeeName,command.Country); _taxLeftWorkCategoryRepository.Create(createTaxLeftWorkCategory); _taxLeftWorkCategoryRepository.SaveChanges(); //ثبت آیتم های تاریخ foreach (var item in command.TaxLeftWorkItemViewModels) { var createItems = new CreateTaxLeftWorkItem() { TaxLeftWorkCategoryId = createTaxLeftWorkCategory.id, StartWorkFa = item.StartWorkFa, LeftWorkFa = item.LeftWorkFa, }; _taxLeftWorkItemApplication.Create(createItems); } return op.Succcedded(); } public OperationResult Edit(EditTaxLeftWorkCategory command) { throw new System.NotImplementedException(); } public EditTaxLeftWorkCategory GetDetails(long id) { return _taxLeftWorkCategoryRepository.GetDetails(id); } public List Search(TaxLeftWorkCategorySearchModel searchModel) { return _taxLeftWorkCategoryRepository.Search(searchModel); } public OperationResult TaxLeftWorkItemsCheckError(List taxLeftWorkItemList) { return _taxLeftWorkCategoryRepository.TaxLeftWorkItemsCheckError(taxLeftWorkItemList); } }