private AnnualLeaveViewModel MapDTOWithViewModel(AnnualLeaveDTO alDto)
        {
            InitializeMapper();
            AnnualLeaveViewModel al = Mapper.Map <AnnualLeaveDTO, AnnualLeaveViewModel>(alDto);

            return(al);
        }
        private async Task <ActionResult> GetViewAsync(int?id, string viewName)
        {
            try {
                AnnualLeaveDTO alDto = await _annualLeaveService.FindByIdAsync(id);

                AnnualLeaveViewModel al = MapDTOWithViewModel(alDto);
                return(View(viewName, al));
            }
            catch (ValidationException ex) {
                _logger.Warn(ex.Message);
                return(View("Error", new string[] { ex.Message }));
            }
        }
        public async Task Delete_Get_ModelIsValid_RetrievesAnnualLeaveFromModel()
        {
            Mock <AnnualLeaveService> mock = new Mock <AnnualLeaveService>();

            mock.Setup(m => m.FindByIdAsync(It.IsAny <int?>())).ReturnsAsync((int?_id) => new AnnualLeaveDTO {
                Id = _id.Value
            });
            AnnualLeaveController controller = GetNewAnnualLeaveController(mock.Object, null);

            ViewResult result = (await controller.Delete(7)) as ViewResult;

            AnnualLeaveViewModel model = result.ViewData.Model as AnnualLeaveViewModel;

            Assert.AreEqual(7, model.Id);
        }
        public async Task <ActionResult> Create(AnnualLeaveViewModel al)
        {
            try {
                AnnualLeaveDTO alDto = MapViewModelWithDTO(al);
                await(_annualLeaveService as AnnualLeaveService).CreateAsync(alDto);
                return(RedirectToAction("Index"));
            }
            catch (ValidationException ex) {
                _logger.Warn(ex.Message);
                ModelState.AddModelError(ex.Property, ex.Message);
            }
            ViewBag.Employees = await GetSelectListEmployeesAsync();

            return(View("Create", al));
        }
        public async Task Edit_Post_ModelIsInvalid_RetrievesAnnualLeaveFromModel()
        {
            Mock <AnnualLeaveService> almock = new Mock <AnnualLeaveService>();

            almock.Setup(m => m.EditAsync(It.IsAny <AnnualLeaveDTO>())).Throws(new ValidationException("", ""));
            Mock <EmployeeService> emock      = new Mock <EmployeeService>();
            AnnualLeaveController  controller = GetNewAnnualLeaveController(almock.Object, emock.Object);

            ViewResult result = (await controller.Edit(new AnnualLeaveViewModel {
                Id = 7
            })) as ViewResult;

            AnnualLeaveViewModel model = result.ViewData.Model as AnnualLeaveViewModel;

            Assert.AreEqual(7, model.Id);
        }
        public AnnualLeaveViewModel PopulateAnnualLeaveView()
        {
            DateTime               fromDate  = DateTime.Parse("31/12/2018");
            AnnualLeaveViewModel   m         = new AnnualLeaveViewModel();
            List <AnnualLeaveItem> l         = new List <AnnualLeaveItem>();
            List <EmployeeDto>     employees = _employeeService.GetEmployees();

            foreach (var e in employees)
            {
                List <AnnualLeaveDto> annualLeave = _annualLeaveRepository.GetAnnualLeave(e.EmployeeId, fromDate);
                l.Add(new AnnualLeaveItem()
                {
                    EmployeeName    = e.Firstname + " " + e.Surname,
                    AnnualLeaveData = annualLeave
                });
            }

            m.EmployeeAnnualLeaveListing = l;
            return(m);
        }
        private AnnualLeaveDTO MapViewModelWithDTO(AnnualLeaveViewModel al)
        {
            Mapper.Initialize(cfg => {
                cfg.CreateMap <AnnualLeaveViewModel, AnnualLeaveDTO>();
                cfg.CreateMap <LeaveScheduleViewModel, LeaveScheduleDTO>()
                .ForMember(ls => ls.AnnualLeaves, opt => opt.Ignore());
                cfg.CreateMap <EmployeeViewModel, EmployeeDTO>()
                .ForMember(e => e.AnnualLeaves, opt => opt.Ignore())
                .ForMember(e => e.Birth, opt => opt.Ignore())
                .ForMember(e => e.BusinessTrips, opt => opt.Ignore())
                .ForMember(e => e.Contacts, opt => opt.Ignore())
                .ForMember(e => e.Education, opt => opt.Ignore())
                .ForMember(e => e.Passport, opt => opt.Ignore());
                cfg.CreateMap <PostViewModel, PostDTO>()
                .ForMember(p => p.Employees, opt => opt.Ignore());
                cfg.CreateMap <DepartmentViewModel, DepartmentDTO>()
                .ForMember(d => d.Manager, opt => opt.Ignore())
                .ForMember(d => d.Organization, opt => opt.Ignore())
                .ForMember(d => d.Posts, opt => opt.Ignore());
            });
            AnnualLeaveDTO alDto = Mapper.Map <AnnualLeaveViewModel, AnnualLeaveDTO>(al);

            return(alDto);
        }
        [HttpGet]// GET: AnnualLeave
        public ActionResult AnnualLeave()
        {
            AnnualLeaveViewModel model = _annualLeaveService.PopulateAnnualLeaveView();

            return(View(model));
        }