// Storage to domain public static Result <Pizza> ToPizzaDomain(this Entities.Pizza dbPizza) { Result <PizzaNameValue> pizzaNameOrError = PizzaNameValue.Create(dbPizza.Name); Result <PizzaSizeValue> pizzaSizeOrError = PizzaSizeValue.Create(dbPizza.Size); Result okOrError = Result.FirstFailureOrOk(pizzaNameOrError, pizzaSizeOrError); if (okOrError.IsFailure) { return(Result.FromError <Pizza>(okOrError)); } ICollection <Result <Ingredient> > ingredientResults = dbPizza.Ingredients .Where(ingredient => ingredient.DeletedOn == null) .Select(ingredient => ingredient.ToIngredientDomain()).ToList(); Result ingredientsOrError = Result.FirstFailureOrOk(ingredientResults); if (ingredientsOrError.IsFailure) { return(Result.FromError <Pizza>(ingredientsOrError)); } return(Pizza.Create(dbPizza.Id, dbPizza.Uid, dbPizza.CreatedOn, dbPizza.DeletedOn, pizzaNameOrError.Value, pizzaSizeOrError.Value, ingredientResults.Select(ingredient => ingredient.Value).ToList())); }
/// <summary> /// This method should be used for creating domain object from DB /// </summary> /// <returns></returns> public static Result <Pizza> Create(int id, Guid uid, DateTime createdOn, DateTime?deletedOn, PizzaNameValue pizzaName, PizzaSizeValue pizzaSize, ICollection <Ingredient> ingredients) { if (uid == default(Guid)) { return(Result.Invalid <Pizza>(ResultErrorCodes.PIZZA_INVALID_UID)); } if (createdOn == default(DateTime)) { return(Result.Invalid <Pizza>(ResultErrorCodes.PIZZA_INVALID_CREATED_ON)); } var pizza = new Pizza { CreatedOn = createdOn, DeletedOn = deletedOn, Id = id, Uid = uid, Name = pizzaName, Size = pizzaSize }; pizza._ingredients.AddRange(ingredients); return(Result.Ok(pizza)); }
public Result UpdateName(PizzaNameValue newPizzaName) { Result resultOrError = CheckEditable(); if (resultOrError.IsFailure) { return(resultOrError); } if (newPizzaName == null) { return(Result.Invalid(ResultErrorCodes.PIZZA_INVALID_NAME)); } Name = newPizzaName; MarkModify(); return(Result.Ok()); }
public static Result <Pizza> Create(Guid uid, DateTime createdOn, string pizzaName, int pizzaSize, ICollection <Ingredient> ingredients) { if (uid == default(Guid)) { return(Result.Invalid <Pizza>(ResultErrorCodes.PIZZA_INVALID_UID)); } if (createdOn == default(DateTime)) { return(Result.Invalid <Pizza>(ResultErrorCodes.PIZZA_INVALID_CREATED_ON)); } Result <PizzaNameValue> pizzaNameOrError = PizzaNameValue.Create(pizzaName); Result <PizzaSizeValue> pizzaSizeOrError = PizzaSizeValue.Create(pizzaSize); Result okOrError = Result.FirstFailureOrOk(pizzaNameOrError, pizzaSizeOrError); if (okOrError.IsFailure) { return(Result.FromError <Pizza>(okOrError)); } var pizza = new Pizza { CreatedOn = createdOn, Uid = uid, Name = pizzaNameOrError.Value, Size = pizzaSizeOrError.Value }; pizza._ingredients.AddRange(ingredients); return(Result.Ok(pizza)); }