public void DetachInnerGroupMemeber(PersonModificationModel personModel, UpdatePersonOrderNoModel updateModel) { PersonModificationData personData = _autoMapperService.MapPersonModificationModel(personModel); UpdatePersonOrderNo updateData = _autoMapperService.MapUpdatePersonModel(updateModel); _personService.DetachMember(UserId, personData, updateData); }
public void MoveBetweenGroups(int groupIdTo, PersonModificationModel modelFrom, UpdatePersonOrderNoModel updateModel) { PersonModificationData dataFrom = _autoMapperService.MapPersonModificationModel(modelFrom); UpdatePersonOrderNo updateData = _autoMapperService.MapUpdatePersonModel(updateModel); _personService.MoveBetweenGroups(UserId, groupIdTo, dataFrom, updateData); }
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)); } }
public void CreateInnerGroupAndMembership(string userId, PersonModificationData personData, UpdatePersonOrderNo updateData) { var group = _groupRepository.LoadEagerWithPersonsAndInnerGroups(userId, personData.GroupId); CreateInnerGroupAndMembershipUncommited(group, personData.InnerGroupKey.Value, personData.ModifiedPersonIds); UpdateOrderNo(updateData, group); // here I update only one element _unitOfWork.Save(); }
public void CreateInnerGroup(PersonModificationModel personModel, UpdatePersonOrderNoModel updateModel) //tutaj musi wpasc model dla update z wypelnionym elementem baseItemId { PersonModificationData personData = _autoMapperService.MapPersonModificationModel(personModel); personData.InnerGroupKey = Guid.NewGuid(); UpdatePersonOrderNo updateData = _autoMapperService.MapUpdatePersonModel(updateModel); _personService.CreateInnerGroupAndMembership(UserId, personData, updateData); }
public void DetachMember(string userId, PersonModificationData personData, UpdatePersonOrderNo updateData) { var group = _groupRepository.LoadEager(userId, personData.GroupId); var relatedItems = Collect(group, personData.ModifiedPersonIds); DeleteMembership(group, personData.ModifiedPersonIds.First(), personData.InnerGroupKey.Value); UpdateOrderNo(updateData, group); DeleteMembership(group, relatedItems.PersonsToModify); DeleteInnerGroups(group, relatedItems.InnerGroupsToDelete); _unitOfWork.Save(); }
// adding single person to existing inner group public void AddInnerGroupMember(string userId, PersonModificationData personData, UpdatePersonOrderNo updateData) { var group = _groupRepository.LoadEagerWithPersonsAndInnerGroups(userId, personData.GroupId); var personId = personData.ModifiedPersonIds.First(); if (!group.CheckInnerGroupKey(personData.InnerGroupKey.Value) || !group.CheckGroupMember(personId)) { throw new Exception(); } group.CreateInnerGroupMembership(personData.InnerGroupKey.Value, personId); UpdateOrderNo(updateData, group); _unitOfWork.Save(); }
public PersonsDeletedData DeleteAndModify(string userId, PersonModificationData data) { Group group = _groupRepository.LoadEager(userId, data.GroupId); var relatedItems = Collect(group, data.ModifiedPersonIds); var personsCloned = group.DeepClonePersons(data.ModifiedPersonIds); var personsToDelete = group.FindPersons(data.ModifiedPersonIds); Delete(personsToDelete); DeleteMembership(group, relatedItems.PersonsToModify); DeleteInnerGroups(group, relatedItems.InnerGroupsToDelete); _unitOfWork.Save(); return(new PersonsDeletedData { Related = relatedItems, Deleted = personsCloned }); }
public void MoveBetweenGroups(string userId, int groupIdTo, PersonModificationData from, UpdatePersonOrderNo updateData) { Group groupFrom = _groupRepository.LoadEagerWithPersonsAndInnerGroups(userId, from.GroupId); Group groupTo = _groupRepository.LoadEagerWithPersonsAndInnerGroups(userId, groupIdTo); if (groupFrom == null || groupTo == null) { throw new ArgumentException("Invalid group id."); } var personsToMove = groupFrom.FindPersons(from.ModifiedPersonIds); personsToMove.ForEach(n => groupTo.AddPerson(n)); if (from.InnerGroupKey != null) { DeleteInnerGroup(groupFrom, from.InnerGroupKey.Value); // because inner group is value object remove it and add it again with the same key groupTo.AddInnerGroup(from.InnerGroupKey.Value); } UpdateOrderNo(updateData, groupTo); // update order no for moved elements _unitOfWork.Save(); }