Files
Backend-Api/CompanyManagment.Application/HolidayApplication.cs
2024-07-05 21:36:15 +03:30

89 lines
3.0 KiB
C#

using System.Collections.Generic;
using _0_Framework.Application;
using Company.Domain.HolidayAgg;
using Company.Domain.HolidayItemAgg;
using CompanyManagment.App.Contracts.Holiday;
using CompanyManagment.App.Contracts.HolidayItem;
namespace CompanyManagment.Application;
public class HolidayApplication : IHolidayApplication
{
private readonly IHolidayRepository _holidayRepository;
private readonly IHolidayItemApplication _holidayItemApplication;
private readonly IHolidayItemRepository _holidayItemRepository;
public HolidayApplication(IHolidayRepository holidayRepository, IHolidayItemApplication holidayItemApplication, IHolidayItemRepository holidayItemRepository)
{
_holidayRepository = holidayRepository;
_holidayItemApplication = holidayItemApplication;
_holidayItemRepository = holidayItemRepository;
}
public OperationResult Create(CreateHoliday command)
{
var operation = new OperationResult();
if (_holidayRepository.Exists(x => x.Year == command.Year))
return operation.Failed("امکان ثبت رکورد تکراری وجود ندارد");
var holiday = new Holiday(command.Year);
_holidayRepository.Create(holiday);
_holidayRepository.SaveChanges();
foreach (var item in command.PersiandatesList)
{
var holidayItems = new CreateHolidayItem
{
HolidayYear = holiday.Year,
HolidayId = holiday.id,
Holidaydate = item,
};
_holidayItemApplication.Create(holidayItems);
}
return operation.Succcedded();
}
public OperationResult Edit(EditHoliday command)
{
var operation = new OperationResult();
var holidayEdit = _holidayRepository.Get(command.Id);
if (holidayEdit == null)
operation.Failed("رکورد مورد نظر وجود ندارد");
if (_holidayRepository.Exists(x => x.Year == command.Year && x.id != command.Id))
return operation.Failed("امکان ثبت رکورد تکراری وجود ندارد");
holidayEdit.Edit(command.Year);
_holidayRepository.SaveChanges();
_holidayItemRepository.RemoveItems(command.Year);
foreach (var item in command.PersiandatesList)
{
var holidayItems = new CreateHolidayItem
{
HolidayYear = command.Year,
HolidayId = command.Id,
Holidaydate = item,
};
_holidayItemApplication.Create(holidayItems);
}
return operation.Succcedded();
}
public EditHoliday GetDetails(long id)
{
return _holidayRepository.GetDetails(id);
}
public List<HolidayViewModel> GetHoliday()
{
return _holidayRepository.GetHoliday();
}
public List<HolidayViewModel> Search(HolidaySearchModel searchModel)
{
return _holidayRepository.Search(searchModel);
}
}