コード例 #1
0
        public ActionResult BookUpdate(BookHolidayViewModel viewModel)
        {
            if (viewModel.Updating)
            {
                var updateHolidayRequest = new UpdateHolidayRequest
                {
                    Id = viewModel.HolidayId.Value,
                    Start = viewModel.Start,
                    End = viewModel.End
                };

                var validationResult = _holidayService.ValidateUpdate(updateHolidayRequest);

                if (!validationResult.IsValid)
                {
                    foreach (var error in validationResult.Errors)
                        ModelState.AddModelError(error.Field ?? "", error.Text);

                    return View("BookUpdate", viewModel);
                }

                _holidayService.Update(updateHolidayRequest);
            }
            else
            {
                Guid id = Guid.NewGuid();

                var bookHolidayRequest = new BookHolidayRequest
                {
                    Id = id,
                    EmployeeId = viewModel.EmployeeId.Value,
                    Start = viewModel.Start,
                    End = viewModel.End
                };

                var validationResult = _holidayService.ValidateBook(bookHolidayRequest);

                if (!validationResult.IsValid)
                {
                    foreach (var error in validationResult.Errors)
                        ModelState.AddModelError(error.Field ?? "", error.Text);

                    return View("BookUpdate", viewModel);
                }

                _holidayService.Book(bookHolidayRequest);
            }

            return RedirectToAction("Index", "Employee", new { employeeId = viewModel.EmployeeId });
        }
コード例 #2
0
        public void Update(UpdateHolidayRequest request)
        {
            var session = _sessionFactory.OpenSession();
            CurrentSessionContext.Bind(session);

            try
            {
                using (var transactionScope = new TransactionScope())
                {
                    var holiday = _holidayRepository.GetById(request.Id);
                    DomainEvents.Register<HolidayUpdatedEvent>(HolidayUpdated);
                    holiday.Update(request.Start, request.End);
                    session.Flush();
                    transactionScope.Complete();
                }
            }
            finally
            {
                CurrentSessionContext.Unbind(_sessionFactory);
                DomainEvents.ClearCallbacks();
                session.Dispose();
            }
        }
コード例 #3
0
        public ValidationMessageCollection ValidateUpdate(UpdateHolidayRequest request)
        {
            var session = _sessionFactory.OpenSession();
            CurrentSessionContext.Bind(session);

            try
            {
                Holiday holiday;

                using (var transaction = session.BeginTransaction())
                {
                    holiday = _holidayRepository.GetById(request.Id);
                    transaction.Commit();
                }

                return holiday.ValidateUpdate(request.Start, request.End);
            }
            finally
            {
                CurrentSessionContext.Unbind(_sessionFactory);
                session.Dispose();
            }
        }