Exemplo n.º 1
0
        public async Task <IActionResult> AddLaundry(DayViewModel parentModel)
        {
            var laundry = parentModel.LaundryToAdd;

            if (!await _authHelpers.CheckDormitoryMembership(User, _dormitoryRepo.GetSingleById(laundry.DormitoryId)))
            {
                return(ControllerHelpers.ShowAccessDeniedErrorPage(this));
            }

            DayViewModel model            = null;
            var          wholeWorkingTime = laundry.startTime + laundry.shiftTime * laundry.shiftCount;

            if (wholeWorkingTime.TotalHours > 24)
            {
                model = CreateDayViewModel(laundry.DormitoryId, DateTime.Today);
                model.AddLaundryError = "Laundry's working time ends after midnight.";
            }
            else if (_laundryRepo.Laundries.Any(x => x.DormitoryId == laundry.DormitoryId && x.Position == laundry.Position))
            {
                model = CreateDayViewModel(laundry.DormitoryId, DateTime.Today);
                model.AddLaundryError = "There is a laundry with the same number.";
            }

            if (model != null)
            {
                model.LaundryToAdd = new Laundry
                {
                    startTime   = laundry.startTime,
                    shiftCount  = laundry.shiftCount,
                    shiftTime   = laundry.shiftTime,
                    Position    = laundry.Position,
                    DormitoryId = laundry.DormitoryId
                };
                return(View(nameof(Day), model));
            }

            var addedLaundry = _laundryRepo.AddLaundry(laundry.DormitoryId, laundry.Position);

            addedLaundry.startTime  = laundry.startTime;
            addedLaundry.shiftCount = laundry.shiftCount;
            addedLaundry.shiftTime  = laundry.shiftTime;

            _laundryRepo.UpdateLaundry(addedLaundry);

            return(RedirectToDayByLaundryId(addedLaundry.Id, DateTime.Now.Date));
        }