Ejemplo n.º 1
0
        public async Task <GroupDto> CreateAsync(int creatorId, GroupDto dto)
        {
            dto.Money         = 0;
            dto.CreatorId     = creatorId;
            dto.CreationTime  = DateTime.Now;
            dto.BossCharacter = null;

            GroupModel group = _mapper.Map <GroupDto, GroupModel>(dto);

            GroupRankModel groupRank = new GroupRankModel
            {
                Name   = "Lider",
                Rights = GroupRights.AllBasic,
            };

            group.DefaultRank = groupRank;

            WorkerModel worker = new WorkerModel
            {
                CharacterId = group.BossCharacterId,
                Group       = group,
            };

            groupRank.Workers.Add(worker);
            group.GroupRanks.Add(groupRank);

            await _unitOfWork.GroupsRepository.InsertAsync(group);

            await _unitOfWork.SaveAsync();

            return(dto);
        }
Ejemplo n.º 2
0
        public void ShouldNot_MapNullProperties()
        {
            var characterModel = new CharacterModel()
            {
                Id   = 1,
                Name = "Test"
            };

            var workerModel = new WorkerModel()
            {
                Id        = 1,
                Character = characterModel
            };

            var groupRank = new GroupRankModel()
            {
                Id      = 1,
                Workers = new HashSet <WorkerModel>()
                {
                    workerModel
                }
            };

            GroupModel groupModel = new GroupModel()
            {
                GroupRanks = new HashSet <GroupRankModel>()
                {
                    groupRank
                }
            };

            workerModel.Group     = groupModel;
            workerModel.GroupRank = groupRank;

            GroupDto groupDto = new GroupDto()
            {
                GroupRanks = new List <GroupRankDto>()
                {
                    new GroupRankDto()
                    {
                        Id      = 1,
                        Workers = new List <WorkerDto>()
                        {
                            new WorkerDto()
                            {
                                Id = 1
                            }
                        }
                    }
                }
            };

            _mapper.Map(groupDto, groupModel);

            var final = groupModel.GroupRanks.ElementAt(0).Workers.ElementAt(0);

            Assert.That(final.Character != null && final.Group != null);
        }
        public async Task <GroupRankDto> CreateAsync(int creatorId, GroupRankDto dto)
        {
            dto.Group = null;
            GroupRankModel model = _mapper.Map <GroupRankDto, GroupRankModel>(dto);
            await _unitOfWork.GroupRanksRepository.InsertAsync(model);

            await _unitOfWork.SaveAsync();

            return(dto);
        }
        public async Task <GroupRankDto> UpdateAsync(int id, GroupRankDto dto)
        {
            dto.Group = null;

            foreach (var worker in dto.Workers)
            {
                worker.Character = null;
                worker.Group     = null;
            }

            GroupRankModel model = await _unitOfWork.GroupRanksRepository.JoinAndGetAsync(id);

            _mapper.Map(dto, model);
            await _unitOfWork.SaveAsync();

            return(dto);
        }
Ejemplo n.º 5
0
        public void ChangeGroupWorkerRank(IPlayer sender, int characterId, int rankToChange, int groupSlot)
        {
            AccountEntity      accountEntity = sender.GetAccountEntity();
            GroupSlotValidator slotValidator = new GroupSlotValidator();

            if (!slotValidator.IsValid((byte)groupSlot))
            {
                sender.SendErrorNotify("Ten slot jest niepoprawny!", "Wybierz inny slot, aby wejść na służbę podanej grupy");
                return;
            }

            if (accountEntity.characterEntity.OnDutyGroup == null)
            {
                sender.SendErrorNotify("Musisz być na służbie", "Wejdź na służbę, aby uruchomić panel grupy");
                return;
            }

            if (sender.TryGetGroupByUnsafeSlot((short)groupSlot, out GroupEntity group, out GroupWorkerModel worker))
            {
                if (!group.CanPlayerManageWorkers(worker))
                {
                    sender.SendErrorNotify("Wystąpił bląd", "Nie masz uprawnień do zarządzania członkami");
                    return;
                }

                GroupWorkerModel workerToUpdate    = group.DbModel.Workers.SingleOrDefault(c => c.CharacterId == characterId);
                GroupRankModel   rankToChangeModel = group.DbModel.Ranks.First(r => r.Id == rankToChange);

                if (worker.GroupRank.Rights < rankToChangeModel.Rights || !group.IsGroupOwner(worker))
                {
                    Alt.Log($"[MEMORY-ALERT] {accountEntity.DbModel.Username} zmienił dane w UI i wysłał emit do serwera z niepoprawnymi danymi");
                    return;
                }

                workerToUpdate.GroupRank = rankToChangeModel;

                group.Save();
                sender.SendChatMessageInfo("Ranga pracownika została zaktualizowana pomyślnie!");
            }
        }