Ejemplo n.º 1
0
        private async Task<ActionResult> ReturnShipmentDateView(Guid notificationId)
        {
            var movementNumber = await mediator.SendAsync(new GenerateMovementNumber(notificationId));
            var shipmentDates = await mediator.SendAsync(new GetShipmentDates(notificationId));

            ViewBag.MovementNumber = movementNumber;
            var model = new ShipmentDateViewModel(shipmentDates, movementNumber);

            return View("ShipmentDate", model);
        } 
        private ShipmentDateViewModel GetViewModel(DateTime? actualDate)
        {
            var shipmentDates = new ShipmentDates
            {
                StartDate = new DateTime(2015, 2, 1),
                EndDate = new DateTime(2016, 1, 1)
            };

            var shipmentDateViewModel = new ShipmentDateViewModel(shipmentDates, 10);

            if (actualDate.HasValue)
            {
                shipmentDateViewModel.Day = actualDate.Value.Day;
                shipmentDateViewModel.Month = actualDate.Value.Month;
                shipmentDateViewModel.Year = actualDate.Value.Year;
            }

            return shipmentDateViewModel;
        }
Ejemplo n.º 3
0
        public async Task<ActionResult> ShipmentDate(Guid notificationId, ShipmentDateViewModel model)
        {
            TempData[MovementNumberKey] = model.MovementNumber;
            TempData[ShipmentDateKey] = model.AsDateTime();

            if (!ModelState.IsValid)
            {
                ViewBag.MovementNumber = model.MovementNumber;
                return View(model);
            }

            var proposedMovementDate = await mediator.SendAsync(new IsProposedMovementDateValid(notificationId, model.AsDateTime().Value));

            if (proposedMovementDate.IsOutOfRange)
            {
                ModelState.AddModelError("Day", 
                    "The actual date of shipment cannot be more than 30 calendar days in the future. Please enter a different date.");
            }

            if (proposedMovementDate.IsOutsideConsentPeriod)
            {
                ModelState.AddModelError("Day", 
                    "The actual date of shipment cannot be outside of the consent validity period. Please enter a different date.");
            }

            if (!ModelState.IsValid)
            {
                ViewBag.MovementNumber = model.MovementNumber;
                return View(model);
            }

            var workingDaysUntilShipment = await mediator.SendAsync(new GetWorkingDaysUntil(notificationId, model.AsDateTime().GetValueOrDefault()));

            if (workingDaysUntilShipment < 4)
            {
                return RedirectToAction("ThreeWorkingDaysWarning", "Create");
            }
            return RedirectToAction("Quantity", "Create");
        }