public static List <MenuForUserDTO> ToUserMenuDto(this List <Menu> model) { var resultList = new List <MenuForUserDTO>(); foreach (var item in model) { var newMenuForUser = new MenuForUserDTO(); newMenuForUser.Date = item.Date; newMenuForUser.MenuId = item.Id; newMenuForUser.Body = item.Body; newMenuForUser.WithFirst = item.PriceWithFirst; newMenuForUser.WithoutFirst = item.PriceWithoutFirst; newMenuForUser.OrderWithFirst = item.Order == null?0: item.Order[0].WithFirst ? 1 : 0; newMenuForUser.OrderWithoutFirst = item.Order != null? item.Order[0].WithoutFirst ? 1 : 0:0; newMenuForUser.Reviews = new List <ReviewDTO>(); if (item.Reviews != null) { foreach (var item2 in item.Reviews) { var newReviews = new ReviewDTO(); newReviews.Body = item2.Body; newReviews.User = new UserForReviewDTO(); newReviews.User.Id = item2.UserId; newReviews.User.FirstName = item2.User.FirstName; newReviews.User.LastName = item2.User.LastName; newReviews.User.ImgType = item2.User.ImgType; newMenuForUser.Reviews.Add(newReviews); } } newMenuForUser.Reviews.Add(new ReviewDTO()); resultList.Add(newMenuForUser); } return(resultList); }
public bool UpdateUserOrder(MenuForUserDTO model, int userId) { using (var work = new PechkaContext()) { var orderForUpdate = work.Orders.FirstOrDefault(u => u.MenuId == model.MenuId && u.UserId == userId); orderForUpdate.WithFirst = model.OrderWithFirst != 0; orderForUpdate.WithoutFirst = model.OrderWithoutFirst != 0; work.Orders.AddOrUpdate(orderForUpdate); work.SaveChanges(); return(true); } }
public ActionResult OrderNewOrEditing(MenuForUserDTO model) { var user = userService.GetUser(User.Identity.Name); var menu = menuService.GetMenu(model.MenuId); if (model.NewReview != null) { reviewService.AddNewReview(user.Id, model.MenuId, model.NewReview); } decimal money = user.LastScore.Money; var order = orderService.GetUserOrderByDateAndUserId(menu.Date, user.Id); if (order == null && (model.OrderWithFirst != 0 && user.LastScore.Money - model.WithFirst > 0 || model.OrderWithoutFirst != 0 && user.LastScore.Money - model.WithoutFirst > 0)) { var change = model.OrderWithFirst != 0 ? menu.PriceWithFirst : menu.PriceWithoutFirst; if (orderService.AddNewOrder(model, user.Id)) { var id = scoreService.ChangeScoreByUserId(user.Id, user.LastScore.Money - change); userService.SetUserLastScore(user.Id, id.Value); } } else if (order != null && order.Menu.Date > DateTime.Now.AddHours(9) && (order.WithoutFirst != (model.OrderWithoutFirst != 0) || order.WithFirst != (model.OrderWithFirst != 0))) { if (order.WithoutFirst) { money += menu.PriceWithoutFirst; } if (order.WithFirst) { money += menu.PriceWithFirst; } if (model.OrderWithFirst != 0) { money -= menu.PriceWithFirst; } if (model.OrderWithoutFirst != 0) { money -= menu.PriceWithoutFirst; } if (money > 0) { if (orderService.UpdateUserOrder(model, user.Id)) { var newScoreId = scoreService.ChangeScoreByUserId(user.Id, money); userService.SetUserLastScore(user.Id, newScoreId.Value); } } } return(RedirectToAction("Index")); }
public bool AddNewOrder(MenuForUserDTO model, int userId) { using (var work = new PechkaContext()) { var orderToAdd = new Order(); orderToAdd.UserId = userId; orderToAdd.MenuId = model.MenuId; orderToAdd.WithoutFirst = model.OrderWithoutFirst != 0; orderToAdd.WithFirst = model.OrderWithFirst != 0; work.Orders.Add(orderToAdd); work.SaveChanges(); return(true); } }