// Delete Department
        public static DepartmentDelete.Response Handle(IRepository repository, DepartmentDelete.Request request)
        {
            var validationDetails = Validator.ValidateRequest(request, repository);

            if (validationDetails.HasValidationIssues)
            {
                return(new DepartmentDelete.Response(validationDetails));
            }

            var department = repository.GetEntity <Department>(
                p => p.DepartmentID == request.CommandModel.DepartmentID,
                new EagerLoadingQueryStrategy <Department>(
                    p => p.Administrator));

            var hasConcurrencyError = false;
            var container           = department.Delete();

            validationDetails = repository.Save(container, dbUpdateConcurrencyExceptionFunc: dbUpdateEx =>
            {
                hasConcurrencyError = true;
                return(new ValidationMessageCollection(new ValidationMessage(string.Empty, dbUpdateEx.ToString())));
            });

            return(new DepartmentDelete.Response(validationDetails, hasConcurrencyError));
        }
        public async Task<ActionResult> Delete(DepartmentDelete.CommandModel commandModel)
        {
            var request = new DepartmentDelete.Request(SystemPrincipal.Name, commandModel);
            var response = await DomainServices.DispatchAsync<DepartmentDelete.Response>(request);

            if (!response.HasValidationIssues)
                return RedirectToAction("Index");

            if (response.HasConcurrencyError.Value)
                RedirectToAction("Delete", new { concurrencyError = true, id = commandModel.DepartmentID });

            ModelState.AddModelError(string.Empty, "Unable to delete. Try again, and if the problem persists contact your system administrator.");
            return View(commandModel);
        }
Beispiel #3
0
        public async Task <ActionResult> Delete(DepartmentDelete.CommandModel commandModel)
        {
            var request  = new DepartmentDelete.Request(SystemPrincipal.Name, commandModel);
            var response = await DomainServices.DispatchAsync <DepartmentDelete.Response>(request);

            if (!response.HasValidationIssues)
            {
                return(RedirectToAction("Index"));
            }

            if (response.HasConcurrencyError.Value)
            {
                RedirectToAction("Delete", new { concurrencyError = true, id = commandModel.DepartmentID });
            }

            ModelState.AddModelError(string.Empty, "Unable to delete. Try again, and if the problem persists contact your system administrator.");
            return(View(commandModel));
        }