示例#1
0
        public void DetachInnerGroupMemeber(PersonModificationModel personModel, UpdatePersonOrderNoModel updateModel)
        {
            PersonModificationData personData = _autoMapperService.MapPersonModificationModel(personModel);
            UpdatePersonOrderNo    updateData = _autoMapperService.MapUpdatePersonModel(updateModel);

            _personService.DetachMember(UserId, personData, updateData);
        }
示例#2
0
        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);
        }
示例#3
0
        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));
            }
        }
示例#4
0
        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();
        }
示例#5
0
        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);
        }
示例#6
0
        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();
        }
示例#7
0
        // 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();
        }
示例#8
0
        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
            });
        }
示例#9
0
        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();
        }