Exemplo n.º 1
0
        public async Task <IActionResult> Update(int id)
        {
            try
            {
                var departmentResult = await _departmentService.GetDepartmentByIdAsync(id);

                if (departmentResult.Succeeded)
                {
                    var department = departmentResult.Model;
                    UpdateDepartmentVM updateDepartment = new UpdateDepartmentVM()
                    {
                        Id    = department.Id,
                        Name  = department.Name,
                        DepId = department.ParentId
                    };
                    return(View(updateDepartment));
                }
                ViewBag.Error = departmentResult.Errors;
                return(View("Error"));
            }
            catch (Exception)
            {
                ViewBag.Error = "Something wrong";
                return(View("Error"));
            }
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Update(UpdateDepartmentVM updateDepartment)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    Department department = new Department()
                    {
                        Id       = updateDepartment.Id,
                        Name     = updateDepartment.Name,
                        ParentId = updateDepartment.DepId
                    };
                    await _departmentService.UpdateAsync(department);

                    return(RedirectToAction("Index"));
                }

                return(View(updateDepartment));
            }
            catch (Exception)
            {
                ViewBag.Error = "Something wrong";
                return(View("Error"));
            }
        }
Exemplo n.º 3
0
        public async Task <IActionResult> Edit(UpdateDepartmentCommand command)
        {
            try
            {
                await Mediator.Send(command);

                return(RedirectToAction(nameof(Index)));
            }
            catch (DbUpdateConcurrencyException ex)
            {
                var vm = new UpdateDepartmentVM
                {
                    DepartmentID = command.DepartmentID.Value,
                    Name         = command.Name,
                    Budget       = command.Budget,
                    StartDate    = command.StartDate,
                    InstructorID = command.InstructorID,
                    RowVersion   = command.RowVersion
                };

                var exceptionEntry = ex.Entries.Single();
                var clientValues   = (Department)exceptionEntry.Entity;
                var databaseEntry  = exceptionEntry.GetDatabaseValues();
                if (databaseEntry == null)
                {
                    ModelState.AddModelError(string.Empty,
                                             "Unable to save changes. The department was deleted by another user.");
                }
                else
                {
                    var databaseValues = (Department)databaseEntry.ToObject();

                    if (databaseValues.Name != clientValues.Name)
                    {
                        ModelState.AddModelError("Name", $"Current value: {databaseValues.Name}");
                    }
                    if (databaseValues.Budget != clientValues.Budget)
                    {
                        ModelState.AddModelError("Budget", $"Current value: {databaseValues.Budget:c}");
                    }
                    if (databaseValues.StartDate != clientValues.StartDate)
                    {
                        ModelState.AddModelError("StartDate", $"Current value: {databaseValues.StartDate:d}");
                    }
                    if (databaseValues.InstructorID != clientValues.InstructorID)
                    {
                        //Models.Instructor databaseInstructor = await _context.Instructors.FirstOrDefaultAsync(i => i.ID == databaseValues.InstructorID);
                        //ModelState.AddModelError("InstructorID", $"Current value: {databaseInstructor?.FullName}");
                    }

                    ModelState.AddModelError(string.Empty, "The record you attempted to edit "
                                             + "was modified by another user after you got the original value. The "
                                             + "edit operation was canceled and the current values in the database "
                                             + "have been displayed. If you still want to edit this record, click "
                                             + "the Save button again. Otherwise click the Back to List hyperlink.");
                    vm.RowVersion = (byte[])databaseValues.RowVersion;
                    ModelState.Remove("RowVersion");
                }

                var instructorsLookup = await Mediator.Send(new GetInstructorLookupCommand());

                ViewData["InstructorID"] = new SelectList(instructorsLookup, "ID", "FullName", command.InstructorID);

                return(View(vm));
            }

            ////-----------------------------
            //if (id == null)
            //{
            //    return NotFound();
            //}

            //var departmentToUpdate = await _context.Departments.Include(i => i.Administrator).FirstOrDefaultAsync(m => m.DepartmentID == id);

            //if (departmentToUpdate == null)
            //{
            //    Models.Department deletedDepartment = new Models.Department();
            //    await TryUpdateModelAsync(deletedDepartment);
            //    ModelState.AddModelError(string.Empty,
            //        "Unable to save changes. The department was deleted by another user.");

            //    var instructorsList = await Mediator.Send(new GetInstructorLookupCommand());
            //    ViewData["InstructorID"] = new SelectList(instructorsList, "ID", "FullName", deletedDepartment.InstructorID);
            //    return View(deletedDepartment);
            //}

            //_context.Entry(departmentToUpdate).Property("RowVersion").OriginalValue = rowVersion;

            //if (await TryUpdateModelAsync<Models.Department>(
            //    departmentToUpdate,
            //    "",
            //    s => s.Name, s => s.StartDate, s => s.Budget, s => s.InstructorID))
            //{
            //    try
            //    {
            //        await _context.SaveChangesAsync();
            //        return RedirectToAction(nameof(Index));
            //    }
            //    catch (DbUpdateConcurrencyException ex)
            //    {
            //        var exceptionEntry = ex.Entries.Single();
            //        var clientValues = (Models.Department)exceptionEntry.Entity;
            //        var databaseEntry = exceptionEntry.GetDatabaseValues();
            //        if (databaseEntry == null)
            //        {
            //            ModelState.AddModelError(string.Empty,
            //                "Unable to save changes. The department was deleted by another user.");
            //        }
            //        else
            //        {
            //            var databaseValues = (Models.Department)databaseEntry.ToObject();

            //            if (databaseValues.Name != clientValues.Name)
            //            {
            //                ModelState.AddModelError("Name", $"Current value: {databaseValues.Name}");
            //            }
            //            if (databaseValues.Budget != clientValues.Budget)
            //            {
            //                ModelState.AddModelError("Budget", $"Current value: {databaseValues.Budget:c}");
            //            }
            //            if (databaseValues.StartDate != clientValues.StartDate)
            //            {
            //                ModelState.AddModelError("StartDate", $"Current value: {databaseValues.StartDate:d}");
            //            }
            //            if (databaseValues.InstructorID != clientValues.InstructorID)
            //            {
            //                Models.Instructor databaseInstructor = await _context.Instructors.FirstOrDefaultAsync(i => i.ID == databaseValues.InstructorID);
            //                ModelState.AddModelError("InstructorID", $"Current value: {databaseInstructor?.FullName}");
            //            }

            //            ModelState.AddModelError(string.Empty, "The record you attempted to edit "
            //                    + "was modified by another user after you got the original value. The "
            //                    + "edit operation was canceled and the current values in the database "
            //                    + "have been displayed. If you still want to edit this record, click "
            //                    + "the Save button again. Otherwise click the Back to List hyperlink.");
            //            departmentToUpdate.RowVersion = (byte[])databaseValues.RowVersion;
            //            ModelState.Remove("RowVersion");
            //        }
            //    }
            //}

            //var instructors = await Mediator.Send(new GetInstructorLookupCommand());
            //ViewData["InstructorID"] = new SelectList(instructors, "ID", "FullName", departmentToUpdate.InstructorID);
            //return View(departmentToUpdate);
        }