public async Task <IEnumerable <HolidayViewModel> > Handle(GetHolidaysQuery request, CancellationToken cancellationToken) { var holidays = await HolidayRepository.Select(); var viewmodel = new List <HolidayViewModel>(); foreach (var item in holidays) { var vm = new HolidayViewModel(); vm.LoadFromDomain(item); viewmodel.Add(vm); } return(viewmodel.OrderBy(item => item.Date).ToList()); }
public async Task <int> Handle(InsertHolidayCommand request, CancellationToken cancellationToken) { var holiday = new DonVo.CQRS.Standard21.Domain.Model.Company.Holiday(request.Date); var holidays = await HolidayRepository.Select(); if (holidays.Any(h => h.Date.Year == holiday.Date.Year && h.Date.Month == holiday.Date.Month && h.Date.Day == holiday.Date.Day)) { throw new ArgumentOutOfRangeException("Date", "Holiday already exist."); } var id = await HolidayRepository.Insert(holiday); await Mediator.Publish(new HolidayInsertedEvent { Id = holiday.Id }); return(id); }
public async Task <IEnumerable <VacationViewModel> > Handle(GetSubordinateRequestsQuery request, CancellationToken cancellationToken) { var employees = await EmployeeRepository.Select(); var holidays = await HolidayRepository.Select(); var requests = new CompanyHierarchyHelper().GetSubordinateRequests(request.EmployeeId, employees, holidays); var viewmodel = new List <VacationViewModel>(); foreach (var item in requests) { var vm = new VacationViewModel(); vm.LoadFromDomain(item, holidays); viewmodel.Add(vm); } return(viewmodel); }
public async Task <Unit> Handle(RequestVacationCommand request, CancellationToken cancellationToken) { var employee = await EmployeeRepository.Get(request.EmployeeId); if (employee == null) { throw new ArgumentOutOfRangeException("Employee does not exist."); } var holidays = await HolidayRepository.Select(); var vacationtype = await VacationTypeRepository.Get(request.VacationTypeId); var vacation = employee.InsertVacation(request.Start, request.End, vacationtype, DonVo.CQRS.Standard21.Domain.Model.Company.VacationState.Requested, holidays); await VacationRepository.Insert(vacation); await Mediator.Publish(new VacationRequestedEvent { Id = vacation.Id }); return(await Unit.Task); }
public async Task <EmployeeViewModel> Handle(GetEmployeeQuery request, CancellationToken cancellationToken) { var employee = await EmployeeRepository.Get(request.Id); var holidays = await HolidayRepository.Select(); var viewmodel = new EmployeeViewModel(); viewmodel.LoadFromDomain(employee, holidays, request.Year.GetValueOrDefault(DateTimeOffset.Now.Year)); var subordinates = await Mediator.Send(new GetSubordinatesQuery { EmployeeId = request.Id }); viewmodel.Subordinates = subordinates.ToList(); var requests = request.MoreVacationRequests ? await Mediator.Send(new GetSubSubordinateRequestsQuery { EmployeeId = request.Id }) : await Mediator.Send(new GetSubordinateRequestsQuery { EmployeeId = request.Id }); viewmodel.SubordinateRequests = requests.ToList(); var vacationtypes = await Mediator.Send(new GetVacationTypesQuery()); viewmodel.VacationTypes = vacationtypes.ToList(); return(viewmodel); }