Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }