public JsonResult DeletePersons(PersonModificationModel model) { string userId = UserId; PersonModificationData data = _autoMapperService.MapPersonModificationModel(model); using (var transaction = new TransactionScope()) { List <Seat> assignedSeats = _ballroomService.CollectAssignedSeats(userId); // has to be fetched before deleting persons because inside seats table there is person id reference and delete rule is set to set null PersonsDeletedData deletedData = _personService.DeleteAndModify(userId, data); List <PersonUndo> undoModel = CreateUnodModel(deletedData, assignedSeats); var undoCommand = new DeletePersonsUndoCommand { Persons = undoModel }; Guid key = _undoService.RegisterUndoCommand(userId, undoCommand); transaction.Complete(); string viewData = this.RenderPartialView("~/Views/Undo/_Undo.cshtml", new UndoModel { Key = key, Description = undoCommand.Description }); return(Json(viewData, JsonRequestBehavior.AllowGet)); } }
private List <PersonUndo> CreateUnodModel(PersonsDeletedData deletedData, List <Seat> assignedSeats) { List <PersonUndo> undoModel = _autoMapperService.MapPersonEntitiesUndo(deletedData.Deleted); UpdateUndoModelWithRelatedPerson(undoModel, deletedData.Related.PersonsToModify); UpdateUndoModelWithAssignedSeat(undoModel, assignedSeats); return(undoModel); }