示例#1
0
        /// <summary>
        /// Creates an ingredient
        /// </summary>
        /// <param name="id"></param>
        /// <param name="createdOn"></param>
        /// <param name="ingredientName"></param>
        /// <param name="ingredientQuantity"></param>
        /// <returns></returns>
        public static Result <Ingredient> Create(int id,
                                                 DateTime createdOn,
                                                 string ingredientName,
                                                 int ingredientQuantity)
        {
            if (createdOn == default(DateTime))
            {
                return(Result.Invalid <Ingredient>(ResultErrorCodes.INGREDIENT_INVALID_CREATED_ON));
            }

            Result <IngredientNameValue>     ingredientNameOrError     = IngredientNameValue.Create(ingredientName);
            Result <IngredientQuantityValue> ingredientQuantityOrError = IngredientQuantityValue.Create(ingredientQuantity);

            Result okOrError = Result.FirstFailureOrOk(ingredientNameOrError, ingredientQuantityOrError);

            if (okOrError.IsFailure)
            {
                return(Result.FromError <Ingredient>(okOrError));
            }

            return(Result.Ok(new Ingredient
            {
                CreatedOn = createdOn,
                Id = id,
                Name = ingredientNameOrError.Value,
                Quantity = ingredientQuantityOrError.Value,
            }));
        }
示例#2
0
        // Storage to domain

        public static Result <Ingredient> ToIngredientDomain(this Entities.Ingredient dbIngredient)
        {
            Result <IngredientNameValue>     ingredientNameOrError     = IngredientNameValue.Create(dbIngredient.Name);
            Result <IngredientQuantityValue> ingredientQuantityOrError = IngredientQuantityValue.Create(dbIngredient.Quantity);

            Result okOrError = Result.FirstFailureOrOk(ingredientNameOrError, ingredientQuantityOrError);

            if (okOrError.IsFailure)
            {
                return(Result.FromError <Ingredient>(okOrError));
            }

            return(Ingredient.Create(dbIngredient.Id,
                                     dbIngredient.CreatedOn,
                                     dbIngredient.DeletedOn,
                                     ingredientNameOrError.Value,
                                     ingredientQuantityOrError.Value,
                                     dbIngredient.PizzaFk));
        }
示例#3
0
        public Result UpdateQuantity(IngredientQuantityValue newIngredientQuantity)
        {
            Result resultOrError = CheckEditable();

            if (resultOrError.IsFailure)
            {
                return(resultOrError);
            }

            if (newIngredientQuantity == default(int))
            {
                return(Result.Invalid(ResultErrorCodes.INGREDIENT_INVALID_QUANTITY));
            }

            Quantity = newIngredientQuantity;

            MarkModify();

            return(Result.Ok());
        }
示例#4
0
        /// <summary>
        /// This method should be used for creating domain object from DB
        /// </summary>
        /// <returns></returns>

        public static Result <Ingredient> Create(int id,
                                                 DateTime createdOn,
                                                 DateTime?deletedOn,
                                                 IngredientNameValue ingredientName,
                                                 IngredientQuantityValue ingredientQuantity,
                                                 int pizzaFk)
        {
            if (createdOn == default(DateTime))
            {
                return(Result.Invalid <Ingredient>(ResultErrorCodes.INGREDIENT_INVALID_CREATED_ON));
            }

            return(Result.Ok(new Ingredient
            {
                CreatedOn = createdOn,
                DeletedOn = deletedOn,
                Id = id,
                Name = ingredientName,
                Quantity = ingredientQuantity,
                PizzaId = pizzaFk
            }));
        }