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); }
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); }
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!"); } }