public async Task <ActionResult <FoodResponse> > PostFood( [FromServices] IFoodsService foodsService, [FromForm] CreateFoodRequest food ) { if (food.Name.IsNullOrWhitespace()) { throw new ErrorResponse(HttpStatusCode.BadRequest, "A name must be entered.", DescriptiveErrorCodes.FoodMissingName); } return(await foodsService.AddFood(food, IdentityHelper.GetIdFromUser(User))); }
public async Task <CreateFoodResult> CreateFood(CreateFoodRequest request) { try { DynamicParameters parameters = new DynamicParameters(); parameters.Add("@ShortContent", request.ShortContent); parameters.Add("@Description", request.Description); parameters.Add("@Address ", request.Address); parameters.Add("@Image ", request.Image); parameters.Add("@Price", request.Price); return(await SqlMapper.QueryFirstOrDefaultAsync <CreateFoodResult>(cnn : connect, sql : "sp_CreateFood", param : parameters, commandType : CommandType.StoredProcedure)); } catch (Exception) { throw; } }
public async Task <IActionResult> CreateFood([FromRoute] int aquariumId, [FromBody] CreateFoodRequest request) { var response = await _iFoodService.CreateAdditionalFoodAsync(aquariumId, request); return(SendResponse(response)); }
public async Task <CreateFoodResult> CreateFood(CreateFoodRequest request) { return(await orderRepository.CreateFood(request)); }
public async Task <FoodResponse> AddFood(CreateFoodRequest request, int userId) { var foods = await _mouthfeel.Foods.ToListAsync(); var flavorsToAdd = request.Flavors.Split(",").Select(f => Int32.Parse(f)); var texturesToAdd = request.Textures.Split(",").Select(t => Int32.Parse(t)); var miscToAdd = request.Miscellaneous.Split(",").Select(m => Int32.Parse(m)); if (foods.Any(f => String.Equals(f.Name, request.Name, StringComparison.OrdinalIgnoreCase))) { throw new ErrorResponse(HttpStatusCode.BadRequest, "A food with that name already exists.", DescriptiveErrorCodes.FoodAlreadyExists); } if (flavorsToAdd?.Any() ?? false) { var flavors = await _attributes.GetAttributes(VotableAttributeType.Flavor); if (!flavorsToAdd.All(f => flavors.Select(fl => fl.Id).Contains(f))) { throw new ErrorResponse(HttpStatusCode.BadRequest, ErrorMessages.FlavorDoesNotExist, DescriptiveErrorCodes.FlavorDoesNotExist); } } if (miscToAdd?.Any() ?? false) { var misc = await _attributes.GetAttributes(VotableAttributeType.Miscellaneous); if (!miscToAdd.All(m => misc.Select(ms => ms.Id).Contains(m))) { throw new ErrorResponse(HttpStatusCode.BadRequest, ErrorMessages.MiscellaneousDoesNotExist, DescriptiveErrorCodes.MiscellaneousDoesNotExist); } } if (texturesToAdd?.Any() ?? false) { var textures = await _attributes.GetAttributes(VotableAttributeType.Texture); if (!texturesToAdd.All(t => textures.Select(tx => tx.Id).Contains(t))) { throw new ErrorResponse(HttpStatusCode.BadRequest, ErrorMessages.TextureDoesNotExist, DescriptiveErrorCodes.TextureDoesNotExist); } } var food = new Food { Name = request.Name, ImageUrl = "" }; _mouthfeel.Foods.Add(food); await _mouthfeel.SaveChangesAsync(); var createdFood = await _mouthfeel.Foods.FirstOrDefaultAsync(f => f.Name == food.Name); var foodId = createdFood.Id; if (request.Image != null) { var imageRequest = new CreateFoodImageRequest { UserId = userId, FoodId = foodId, Image = request.Image }; var image = await _images.UploadImage(imageRequest); } var flavorTasks = flavorsToAdd?.Select(f => _attributes.ManageVote(f, userId, foodId, VotableAttributeType.Flavor)); var miscTasks = miscToAdd?.Select(m => _attributes.ManageVote(m, userId, foodId, VotableAttributeType.Miscellaneous)); var textureTasks = texturesToAdd?.Select(t => _attributes.ManageVote(t, userId, foodId, VotableAttributeType.Texture)); // TODO: Probably need error handling here if (flavorTasks != null) { foreach (var flavor in flavorTasks) { await flavor; } } if (miscTasks != null) { foreach (var misc in miscTasks) { await misc; } } if (textureTasks != null) { foreach (var texture in textureTasks) { await texture; } } return(await GetFoodDetails(foodId, userId)); }
public async Task <OkObjectResult> Create(CreateFoodRequest request) { return(Ok(await foodService.CreateFood(request))); }
public async Task <ServiceResponse> CreateAdditionalFoodAsync(int aquariumId, CreateFoodRequest request) { Random random = new Random(); var aquarium = await GetEntityByIdAsync <Aquarium>(aquariumId); Context.Foods.Add(new Food() { X = request.X == 0 ? (float)random.NextDouble() * aquarium.Width : request.X, Y = request.Y == 0 ? (float)random.NextDouble() * aquarium.Height : request.Y, AquariumId = aquariumId }); await SaveChangesAsync(); return(new ServiceResponse(HttpStatusCode.Created)); }