Exemplo n.º 1
0
        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)));
        }
Exemplo n.º 2
0
 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;
     }
 }
Exemplo n.º 3
0
        public async Task <IActionResult> CreateFood([FromRoute] int aquariumId, [FromBody] CreateFoodRequest request)
        {
            var response = await _iFoodService.CreateAdditionalFoodAsync(aquariumId, request);

            return(SendResponse(response));
        }
Exemplo n.º 4
0
 public async Task <CreateFoodResult> CreateFood(CreateFoodRequest request)
 {
     return(await orderRepository.CreateFood(request));
 }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 6
0
 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));
        }