コード例 #1
0
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='request'>
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <object> AddMealAsync(this IGoals operations, AddMealRequest request, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.AddMealWithHttpMessagesAsync(request, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
コード例 #2
0
ファイル: Meal.cs プロジェクト: KeshriRaj/mealdb
        public bool AddMealData(AddMealRequest request)
        {
            if (request != null)
            {
                Meals Meal = new Meals();
                Meal.MealName      = request.Name;
                Meal.Image         = request.Image;
                Meal.CountryId     = request.CountryId;
                Meal.ingredientsId = request.IngredientsId;
                _db.Meals.Add(Meal);
                _db.SaveChanges();
                int maxm = _db.Meals.Max(p => p.Id);

                Requirements IngredientsData = new Requirements();

                IngredientsData.Components        = request.components;
                IngredientsData.ImagesIngredients = request.ImageIngredients;
                IngredientsData.Instructions      = request.Instructions;
                IngredientsData.MealsId           = maxm;
                _db.Requirements.Add(IngredientsData);
                _db.SaveChanges();
                return(true);
            }

            return(false);
        }
コード例 #3
0
        public async Task <ActionResult <MealInstanceModel> > AddMeal([FromBody] AddMealRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.GetErrorMessages()));
            }

            try
            {
                var result = await _repository.AddMeal(
                    User.Claims.GetUserId(),
                    new MealInstanceEntity
                {
                    Goal = new GoalEntity {
                        GoalId = request.GoalId
                    },
                    Product = new ProductEntityRef {
                        ProductId = request.ProductId
                    },
                    MealType = new MealTypeEntity {
                        MealTypeId = request.MealTypeId
                    },
                    Date   = request.Date,
                    Amount = request.Amount
                });

                var response = new MealInstanceModel
                {
                    MealInstanceId = result.MealInstanceId,
                    GoalId         = result.Goal.GoalId,
                    Amount         = result.Amount,
                    Date           = result.Date,
                    Product        = new MealProductModel {
                        ProductId = result.Product.ProductId, Name = result.Product.Name
                    },
                    MealType = new MealTypeModel {
                        Id = result.MealType.MealTypeId, Name = result.MealType.Name
                    }
                };

                return(response);
            }
            catch (DbException ex)
            {
                if (ex.Code == 50100)
                {
                    return(Forbid());
                }

                return(BadRequest(ex.Message));
            }
            catch (Exception)
            {
                return(StatusCode(500));
            }
        }
コード例 #4
0
        public async Task EditAsync(long id, AddMealRequest addMealRequest)
        {
            var meal = await GetMealByIdAsync(id);

            meal            = mapper.Map <AddMealRequest, Meal>(addMealRequest, meal);
            meal.Restaurant = await applicationDbContext.Restaurants.Include(t => t.Meals).ThenInclude(m => m.Price)
                              .FirstOrDefaultAsync(t => t.RestaurantId == addMealRequest.RestaurantId);

            if (addMealRequest.Image != null)
            {
                CloudBlockBlob blob = await blobStorageService.MakeBlobFolderAndSaveImageAsync(id, addMealRequest.Image);
                await AddImageUriToMealAsync(id, blob);
            }
            await applicationDbContext.SaveChangesAsync();
        }
コード例 #5
0
        public async Task <IActionResult> Add(AddMealRequest addMealRequest)
        {
            if (!await restaurantService.ValidateAccessAsync(addMealRequest.RestaurantId, User))
            {
                return(RedirectToAction(nameof(HomeController.Index), "Home"));
            }

            if (ModelState.IsValid)
            {
                await mealService.SaveMealAsync(addMealRequest);

                return(RedirectToAction(nameof(RestaurantController.Edit), "Restaurant", new { id = addMealRequest.RestaurantId }));
            }
            return(View(addMealRequest));
        }
コード例 #6
0
        public async Task <IActionResult> Add(long id)
        {
            if (!await restaurantService.ValidateAccessAsync(id, User))
            {
                return(RedirectToAction(nameof(HomeController.Index), "Home"));
            }

            AddMealRequest addMealRequest = new AddMealRequest()
            {
                RestaurantId = id,
                Price        = new Price()
            };

            return(View(addMealRequest));
        }
コード例 #7
0
        public async Task <IActionResult> Edit(AddMealRequest addMealRequest, long id)
        {
            if (!await mealService.ValidateAccessAsync(id, User))
            {
                return(RedirectToAction(nameof(HomeController.Index), "Home"));
            }

            if (ModelState.IsValid)
            {
                var meal = await mealService.GetMealByIdAsync(id);

                if (meal != null)
                {
                    await mealService.EditAsync(id, addMealRequest);
                }
                return(RedirectToAction(nameof(RestaurantController.Edit), "Restaurant", new { id = meal.Restaurant.RestaurantId }));
            }
            return(View(addMealRequest));
        }
コード例 #8
0
        public async Task SaveMealAsync(AddMealRequest addMealRequest)
        {
            var meal = mapper.Map <AddMealRequest, Meal>(addMealRequest);

            meal.Restaurant = await applicationDbContext.Restaurants.Include(t => t.Meals).ThenInclude(m => m.Price)
                              .FirstOrDefaultAsync(t => t.RestaurantId == addMealRequest.RestaurantId);

            await applicationDbContext.Meals.AddAsync(meal);

            await applicationDbContext.SaveChangesAsync();

            if (addMealRequest.Image == null)
            {
                meal.ImageUri = "https://dotnetpincerstorage.blob.core.windows.net/mealimages/default/default.png";
            }
            else
            {
                CloudBlockBlob blob = await blobStorageService.MakeBlobFolderAndSaveImageAsync(meal.MealId, addMealRequest.Image);
                await AddImageUriToMealAsync(meal.MealId, blob);
            }
            await applicationDbContext.SaveChangesAsync();
        }
コード例 #9
0
        public async Task Meal_is_deleted()
        {
            using (var context = new ApplicationDbContext(options))
            {
                var mealRequest = new AddMealRequest()
                {
                    Name = "TestMeal3"
                };

                mockMapper.Setup(x => x.Map <AddMealRequest, Meal>(It.IsAny <AddMealRequest>()))
                .Returns(new Meal()
                {
                    Name = mealRequest.Name,
                });

                var mealService = new MealService(context, mockMapper.Object, mockBlobStorageService.Object, mockRestaurantService.Object);
                var length      = await context.Meals.CountAsync();

                await mealService.DeleteMealAsync(3);

                Assert.Equal(length - 1, await context.Meals.CountAsync());
            }
        }
コード例 #10
0
ファイル: MealsService.cs プロジェクト: GitKokoszka/Cookify
        public ServiceResponse AddMealToList(string userId, AddMealRequest addMealRequest)
        {
            try
            {
                var user = _userRepository.GetWhere(x => x.Id == userId);

                var mealToAdd = new Meal
                {
                    Id             = ObjectId.GenerateNewId().ToString(),
                    Name           = addMealRequest.Name,
                    Ingredients    = addMealRequest.Ingredients,
                    Recipe         = addMealRequest.Recipe,
                    AdditionalInfo = addMealRequest.AdditionalInfo
                };

                var result = _userRepository.AddMealToList(user.Id, mealToAdd);

                if (result == null)
                {
                    return(ServiceResponse.Failed());
                }

                if (result.Count() == user.MealsList.Count + 1)
                {
                    return(ServiceResponse.Succeeded());
                }
                else
                {
                    return(ServiceResponse.Failed());
                }
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex.ToString());
                return(ServiceResponse.Failed());
            }
        }
コード例 #11
0
        public IActionResult AddMealToList([FromBody] AddMealRequest request)
        {
            HttpContext.Request.Headers.TryGetValue(AppSettings.AuthenticationHeader, out var jwtValues);
            string jwtToken = jwtValues.FirstOrDefault();

            if (!JwtHelper.IsJwtValid(jwtToken, _jwtTokenSettings.TokenKey, _jwtTokenSettings.Issuer, out var user))
            {
                return(Unauthorized());
            }

            if (user == null)
            {
                return(Unauthorized());
            }

            if (request == null || !request.IsValid)
            {
                return(BadRequest());
            }

            var result = _mealsService.AddMealToList(user.Id, request);

            return(result.IsSuccess ? new OkResult() : StatusCode(StatusCodes.Status500InternalServerError));
        }
コード例 #12
0
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='request'>
 /// </param>
 public static object AddMeal(this IGoals operations, AddMealRequest request)
 {
     return(Task.Factory.StartNew(s => ((IGoals)s).AddMealAsync(request), operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult());
 }