public Character CreateCustomCharacter(CreateCustomCharacterRequest characterRequest) { var character = new Character { Name = characterRequest.Name, Sex = characterRequest.Sex, IsActive = true, IsNpc = characterRequest.IsNpc, Ad = characterRequest.Stats.Ad, Cha = characterRequest.Stats.Cha, Cou = characterRequest.Stats.Cou, Fo = characterRequest.Stats.Fo, Int = characterRequest.Stats.Int, Ev = characterRequest.BasicStatsOverrides.Ev, Ea = characterRequest.BasicStatsOverrides.Ea, // FIXME: maxEv, maxEa // FIXME: At/Prd Level = characterRequest.Level, Experience = characterRequest.Experience, FatePoint = characterRequest.FatePoint, OriginId = characterRequest.OriginId, }; character.Jobs = characterRequest.JobIds.Select(jobId => new CharacterJob { JobId = jobId }).ToList(); character.Skills = characterRequest.SkillIds.Select(x => new CharacterSkill { SkillId = x }).ToList(); character.Specialities = characterRequest.SpecialityIds.SelectMany(x => x.Value).Select(specialityId => new CharacterSpeciality { SpecialityId = specialityId }).ToList(); return(character); }
public async Task <CreatedActionResult <CreateCharacterResponse> > PostCreateCustomCharacterAsync( [FromServices] NaheulbookExecutionContext executionContext, CreateCustomCharacterRequest request ) { try { var character = await _characterService.CreateCustomCharacterAsync(executionContext, request); return(_mapper.Map <CreateCharacterResponse>(character)); } catch (ForbiddenAccessException ex) { throw new HttpErrorException(StatusCodes.Status403Forbidden, ex); } catch (GroupNotFoundException ex) { throw new HttpErrorException(StatusCodes.Status400BadRequest, ex); } }
public async Task <Character> CreateCustomCharacterAsync(NaheulbookExecutionContext executionContext, CreateCustomCharacterRequest request) { using var uow = _unitOfWorkFactory.CreateUnitOfWork(); var character = _characterFactory.CreateCustomCharacter(request); if (request.GroupId.HasValue) { var group = await uow.Groups.GetAsync(request.GroupId.Value); if (group == null) { throw new GroupNotFoundException(request.GroupId.Value); } _authorizationUtil.EnsureIsGroupOwner(executionContext, @group); character.Group = @group; } character.OwnerId = executionContext.UserId; uow.Characters.Add(character); await uow.SaveChangesAsync(); return(character); }