public async Task <ServiceResponse> CreateFish(CreateFishRequest request) { //TODO: TA METODA JEST BARDZO WAŻNA ALE JEJ PRZEROBIENIE WYMAGA DOGŁĘBNEGO SPRAWDZENIA var aquarium = await GetEntityByIdAsync <Aquarium>(request.AquariumId); if (aquarium.Fishes.Where(f => f.IsAlive).Count() >= aquarium.Capacity) { throw new RestException(HttpStatusCode.BadRequest, "Cannot create another object. Aquarium has maximum capacity."); } Random random = new Random(); var fish = new Fish() { Name = request.Name, AquariumId = request.AquariumId, IsAlive = true, OwnerId = CurrentlyLoggedUser == null ? null : CurrentlyLoggedUser.Id, PhysicalStatistic = new PhysicalStatistic() { X = random.Next(0, aquarium.Width), Y = random.Next(0, aquarium.Height), V = random.Next(2, 4), Vx = random.Next(2, 4) * random.Next(0, 100) > 50 ? 1 : -1, Vy = random.Next(2, 4) * random.Next(0, 100) > 50 ? 1 : -1, Color = String.Format("#{0:X6}", random.Next(0x1000000)), VisionAngle = random.Next(30, 60), VisionRange = random.Next(20, 40), }, SetOfMutations = new SetOfMutations() { }, LifeTimeStatistic = new LifeTimeStatistic() { BirthDate = DateTime.UtcNow, DeathDate = null, }, LifeParameters = new LifeParameters() { Hunger = 3.0F, HungerInterval = new TimeSpan(0, 0, random.Next(30, 60)), LastHungerUpdate = DateTime.UtcNow, Vitality = LifeParameters.MAX_VITALITY, VitalityInterval = new TimeSpan(0, 0, random.Next(55, 60)), LastVitalityUpdate = DateTime.UtcNow } }; Context.Fishes.Add(fish); await SaveChangesAsync(); return(new ServiceResponse(HttpStatusCode.Created)); }
public async Task <IActionResult> CreateFish([FromBody] CreateFishRequest request) { var response = await _fishService.CreateFish(request); return(SendResponse(response)); }