Пример #1
0
        // GET: Preferences/Edit/5
        public async Task <IActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var datePreference = await _context.DatePreference.Include(m => m.User).Include(m => m.Shift).SingleOrDefaultAsync(m => m.Id == id);

            if (datePreference == null)
            {
                return(NotFound());
            }


            DatePreferenceEditViewModel vm = new DatePreferenceEditViewModel()
            {
                Id          = datePreference.Id,
                Day         = datePreference.Shift.ShiftDate.GetValueOrDefault(),
                IsPreffered = datePreference.IsPreffered,
                UserId      = datePreference.UserId.GetValueOrDefault()
            };

            //ViewData["UserId"] = new SelectList(_context.User, "Id", "Email", datePreference.UserId);
            return(View(vm));
        }
Пример #2
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,UserId,Day,IsPreffered")] DatePreferenceEditViewModel vm)
        {
            if (id != vm.Id)
            {
                return(NotFound());
            }

            var datePreference = await _context.DatePreference.Include(m => m.User).Include(m => m.Shift).SingleOrDefaultAsync(m => m.Id == id);

            if (datePreference == null)
            {
                return(NotFound());
            }

            datePreference.IsPreffered = vm.IsPreffered;

            #region shift date existence checking, again adding if not exists - same as on create
            var shift = await _context.Shift.SingleOrDefaultAsync(m => m.ShiftDate == vm.Day);

            if (shift == null)
            {
                shift = new Shift()
                {
                    IsShorterDay = false,
                    ShiftDate    = vm.Day
                };

                try
                {
                    _context.Add(shift);
                    await _context.SaveChangesAsync();
                }
                catch
                {
                    return(NotFound("Desired date preference doesn't have corresponding shift available."));
                }
            }
            #endregion

            datePreference.Shift = shift;

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(datePreference);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!DatePreferenceExists(datePreference.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }

            return(View(vm));
        }