* Extended functionalities
* Added different UIs
This commit is contained in:
36
MealPlan.Api/Validators/CreateRecipeValidator.cs
Normal file
36
MealPlan.Api/Validators/CreateRecipeValidator.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using FluentValidation;
|
||||
using MealPlan.Api.DTOs.Recipe;
|
||||
|
||||
namespace MealPlan.Api.Validators;
|
||||
|
||||
public class CreateRecipeValidator : AbstractValidator<CreateRecipeDto>
|
||||
{
|
||||
public CreateRecipeValidator()
|
||||
{
|
||||
RuleFor(x => x.Name).NotEmpty().MaximumLength(255);
|
||||
RuleFor(x => x.MealCategory).InclusiveBetween(0, 3);
|
||||
RuleFor(x => x.Calories).GreaterThanOrEqualTo(0).When(x => x.Calories.HasValue);
|
||||
RuleFor(x => x.PrepTimeMinutes).GreaterThanOrEqualTo(0).When(x => x.PrepTimeMinutes.HasValue);
|
||||
RuleForEach(x => x.Ingredients).SetValidator(new CreateIngredientValidator());
|
||||
RuleForEach(x => x.Steps).SetValidator(new CreateRecipeStepValidator());
|
||||
}
|
||||
}
|
||||
|
||||
public class CreateIngredientValidator : AbstractValidator<CreateIngredientDto>
|
||||
{
|
||||
public CreateIngredientValidator()
|
||||
{
|
||||
RuleFor(x => x.Name).NotEmpty().MaximumLength(255);
|
||||
RuleFor(x => x.Unit).MaximumLength(50).When(x => x.Unit != null);
|
||||
RuleFor(x => x.AmountGrams).GreaterThanOrEqualTo(0).When(x => x.AmountGrams.HasValue);
|
||||
}
|
||||
}
|
||||
|
||||
public class CreateRecipeStepValidator : AbstractValidator<CreateRecipeStepDto>
|
||||
{
|
||||
public CreateRecipeStepValidator()
|
||||
{
|
||||
RuleFor(x => x.StepNumber).GreaterThan(0);
|
||||
RuleFor(x => x.Description).NotEmpty();
|
||||
}
|
||||
}
|
||||
64
MealPlan.Api/Validators/DietValidators.cs
Normal file
64
MealPlan.Api/Validators/DietValidators.cs
Normal file
@@ -0,0 +1,64 @@
|
||||
using FluentValidation;
|
||||
using MealPlan.Api.DTOs.Diet;
|
||||
|
||||
namespace MealPlan.Api.Validators;
|
||||
|
||||
public class UserDailyGoalsValidator : AbstractValidator<UserDailyGoalsDto>
|
||||
{
|
||||
public UserDailyGoalsValidator()
|
||||
{
|
||||
RuleFor(x => x.CalorieGoal).GreaterThanOrEqualTo(0).When(x => x.CalorieGoal.HasValue);
|
||||
RuleFor(x => x.ProteinGoalG).GreaterThanOrEqualTo(0).When(x => x.ProteinGoalG.HasValue);
|
||||
RuleFor(x => x.FatGoalG).GreaterThanOrEqualTo(0).When(x => x.FatGoalG.HasValue);
|
||||
RuleFor(x => x.CarbsGoalG).GreaterThanOrEqualTo(0).When(x => x.CarbsGoalG.HasValue);
|
||||
RuleFor(x => x.WaterGoalMl).GreaterThan(0).When(x => x.WaterGoalMl.HasValue);
|
||||
}
|
||||
}
|
||||
|
||||
public class LogMealValidator : AbstractValidator<LogMealDto>
|
||||
{
|
||||
public LogMealValidator()
|
||||
{
|
||||
RuleFor(x => x.MealCategory).InclusiveBetween(0, 4);
|
||||
RuleFor(x => x.Portions).GreaterThan(0);
|
||||
RuleFor(x => x.Name).MaximumLength(255).When(x => x.Name != null);
|
||||
RuleFor(x => x)
|
||||
.Must(x => x.RecipeId.HasValue || (x.CatalogItemId.HasValue && x.Grams is > 0) || !string.IsNullOrWhiteSpace(x.Name))
|
||||
.WithMessage("Provide recipeId, catalogItemId with grams, or name.");
|
||||
RuleFor(x => x.Grams).GreaterThan(0).When(x => x.CatalogItemId.HasValue);
|
||||
RuleFor(x => x.Calories).GreaterThanOrEqualTo(0).When(x => x.Calories.HasValue);
|
||||
}
|
||||
}
|
||||
|
||||
public class LogDrinkValidator : AbstractValidator<LogDrinkDto>
|
||||
{
|
||||
public LogDrinkValidator()
|
||||
{
|
||||
RuleFor(x => x.VolumeMl).GreaterThan(0);
|
||||
RuleFor(x => x.Name).MaximumLength(255).When(x => x.Name != null);
|
||||
RuleFor(x => x)
|
||||
.Must(x => x.DrinkCatalogId.HasValue || !string.IsNullOrWhiteSpace(x.Name))
|
||||
.WithMessage("Provide either drinkCatalogId or name.");
|
||||
RuleFor(x => x.Calories).GreaterThanOrEqualTo(0).When(x => x.Calories.HasValue);
|
||||
}
|
||||
}
|
||||
|
||||
public class CreateDietReminderValidator : AbstractValidator<CreateDietReminderDto>
|
||||
{
|
||||
public CreateDietReminderValidator()
|
||||
{
|
||||
RuleFor(x => x.ReminderType).InclusiveBetween(0, 3);
|
||||
RuleFor(x => x.Title).NotEmpty().MaximumLength(120);
|
||||
RuleFor(x => x.Message).MaximumLength(500).When(x => x.Message != null);
|
||||
RuleFor(x => x.DaysOfWeekMask).InclusiveBetween(1, 127);
|
||||
RuleFor(x => x.MealCategory).InclusiveBetween(0, 4).When(x => x.MealCategory.HasValue);
|
||||
}
|
||||
}
|
||||
|
||||
public class UpdateDietReminderValidator : AbstractValidator<UpdateDietReminderDto>
|
||||
{
|
||||
public UpdateDietReminderValidator()
|
||||
{
|
||||
Include(new CreateDietReminderValidator());
|
||||
}
|
||||
}
|
||||
19
MealPlan.Api/Validators/IngredientCatalogValidators.cs
Normal file
19
MealPlan.Api/Validators/IngredientCatalogValidators.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using FluentValidation;
|
||||
using MealPlan.Api.DTOs.IngredientCatalog;
|
||||
|
||||
namespace MealPlan.Api.Validators;
|
||||
|
||||
public class UpsertIngredientNutritionItemValidator : AbstractValidator<UpsertIngredientNutritionItemDto>
|
||||
{
|
||||
public UpsertIngredientNutritionItemValidator()
|
||||
{
|
||||
RuleFor(x => x.CategoryId).GreaterThan(0);
|
||||
RuleFor(x => x.Name).NotEmpty().MaximumLength(255);
|
||||
RuleFor(x => x.NamePl).MaximumLength(255).When(x => x.NamePl != null);
|
||||
RuleFor(x => x.CaloriesPer100G).GreaterThanOrEqualTo(0);
|
||||
RuleFor(x => x.ProteinGPer100G).GreaterThanOrEqualTo(0);
|
||||
RuleFor(x => x.FatGPer100G).GreaterThanOrEqualTo(0);
|
||||
RuleFor(x => x.CarbsGPer100G).GreaterThanOrEqualTo(0);
|
||||
RuleFor(x => x.FiberGPer100G).GreaterThanOrEqualTo(0).When(x => x.FiberGPer100G.HasValue);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user