public IHttpActionResult PutTFood(int id, TFood tFood) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != tFood.Id) { return(BadRequest()); } db.Entry(tFood).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!TFoodExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }
public IHttpActionResult GetTFood(int id) { TFood tFood = db.TFoods.Find(id); if (tFood == null) { return(NotFound()); } return(Ok(tFood)); }
public IHttpActionResult PostTFood(TFood tFood) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } db.TFoods.Add(tFood); db.SaveChanges(); return(CreatedAtRoute("DefaultApi", new { id = tFood.Id }, tFood)); }
public IHttpActionResult DeleteTFood(int id) { TFood tFood = db.TFoods.Find(id); if (tFood == null) { return(NotFound()); } db.TFoods.Remove(tFood); db.SaveChanges(); return(Ok(tFood)); }
public Task <ResultWrapper <CustomerCreatePaymentSessionOutput> > Handle(CustomerCreatePaymentSessionCommand request, CancellationToken cancellationToken) { ResultWrapper <CustomerCreatePaymentSessionOutput> result = new ResultWrapper <CustomerCreatePaymentSessionOutput>(); try { using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.RequiresNew)) { TUser tUser = _dbContext.TUser.FirstOrDefault(x => x.FireBaseId == request.firebaseId); if (tUser == null) { result.Status = false; result.Message = "cannot find customer!"; return(Task.FromResult(result)); } if (!request.OrderItems.Any()) { result.Status = false; result.Message = "invalid foods data!"; return(Task.FromResult(result)); } TUser tSupplier = _dbContext.TFood .Include(x => x.TUser) .FirstOrDefault(x => x.Id == request.OrderItems.First().FoodId)?.TUser; if (tSupplier == null) { result.Status = false; result.Message = "cannot find supplier!"; return(Task.FromResult(result)); } string generatedCode = ""; string generatedTitle = ""; Guid PaymentUniqueId = Guid.NewGuid(); TOrder tOrder = new TOrder() { Enabled = true, Code = generatedCode, Created = DateTime.Now, Date = DateTime.Now, Title = generatedTitle, TrackingCode = PaymentUniqueId.ToString(), TSupplierId = tSupplier.Id, TUserId = tUser.Id, TotalPayablePrice = 0, Submited = false }; _dbContext.TOrder.Add(tOrder); _dbContext.SaveChanges(); decimal TotalPayablePrice = 0; foreach (var detail in request.OrderItems) { TFood food = _dbContext.TFood .FirstOrDefault(x => x.Id == detail.FoodId); if (food == null) { result.Status = false; result.Message = "invalid food data!"; return(Task.FromResult(result)); } TOrderDetail tOrderDetail = new TOrderDetail() { Enabled = true, Created = DateTime.Now, Amount = detail.Amount, TFoodId = food.Id, TUserId = tSupplier.Id, UnitPrice = food.Price, RowPrice = food.Price * detail.Amount, TOrderId = tOrder.Id }; TotalPayablePrice += tOrderDetail.RowPrice; _dbContext.TOrderDetail.Add(tOrderDetail); } _dbContext.SaveChanges(); tOrder.TotalPayablePrice = TotalPayablePrice; _dbContext.TOrder.Update(tOrder); _dbContext.SaveChanges(); string SuccessUrl = request.SuccessUrl + "?UID=" + PaymentUniqueId; TPayment tPayment = new TPayment() { UniqueId = PaymentUniqueId, UserId = tUser.Id, Amount = TotalPayablePrice, OrderId = tOrder.Id, Success = false, Used = false, Enabled = true, Created = DateTime.Now, }; _dbContext.TPayment.Add(tPayment); _dbContext.SaveChanges(); transaction.Complete(); string secretKey = "sk_test_51JKejjB9j2pHQUNgVymkcotBwOhw64UhTOxrOWLn6QzpdIqmUOGh0lJCkozGMgWNLYQcg4XKriYmiNjfDRiwujnV00Lv2iKYgC"; StripeConfiguration.ApiKey = secretKey; var options = new SessionCreateOptions() { PaymentMethodTypes = new List <String>() { "card" }, LineItems = new List <SessionLineItemOptions>() { }, PaymentIntentData = new SessionPaymentIntentDataOptions() { ApplicationFeeAmount = 500, TransferData = new SessionPaymentIntentDataTransferDataOptions() { Destination = "acct_1JL9JuPUzKlkrnDH" } }, Mode = "payment", SuccessUrl = SuccessUrl, CancelUrl = request.CancelUrl }; foreach (var item in request.OrderItems) { options.LineItems.Add(new SessionLineItemOptions() { Quantity = item.Amount, PriceData = new SessionLineItemPriceDataOptions() { Currency = "usd", UnitAmount = item.Price, ProductData = new SessionLineItemPriceDataProductDataOptions() { Name = item.FoodId.ToString() } } }); } var service = new SessionService(); Task <Session> session = service.CreateAsync(options); session.Wait(); result = new ResultWrapper <CustomerCreatePaymentSessionOutput>() { Status = true, Result = new CustomerCreatePaymentSessionOutput() { SessionId = session.Result.Id, SessionUrl = session.Result.Url } }; } } catch (Exception ex) { result.Status = false; result.Message = ex.Message; } return(Task.FromResult(result)); }
public Task <ResultWrapper <UpdateSupplierFoodOutput> > Handle(UpdateSupplierFoodCommand request, CancellationToken cancellationToken) { ResultWrapper <UpdateSupplierFoodOutput> updateFoodResult = new ResultWrapper <UpdateSupplierFoodOutput>(); if (!request.FoodNutritions.Any()) { updateFoodResult.Status = false; updateFoodResult.Message = "please enter nutiritions!"; return(Task.FromResult(updateFoodResult)); } try { using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.RequiresNew)) { TFood tFood = _dbContext.TFood .Include(x => x.TFoodNutritions) .FirstOrDefault(x => x.Id == request.Id); if (tFood == null) { updateFoodResult.Status = false; updateFoodResult.Message = "this food doesn't exists!"; return(Task.FromResult(updateFoodResult)); } tFood.Title = request.Title; tFood.Image = request.Image; tFood.Tags = request.Tags; tFood.Price = request.Price; tFood.Enabled = request.Enabled; tFood.TFoodTypeId = request.FoodTypeId; _dbContext.TFood.Update(tFood); _dbContext.SaveChanges(); List <TReference> tRefrences = _dbContext.TReference.Where(x => tFood.TFoodNutritions.Select(x => x.TReferenceId).Contains(x.Id)).ToList(); _dbContext.TFoodNutrition.RemoveRange(tFood.TFoodNutritions); _dbContext.TReference.RemoveRange(tRefrences); _dbContext.SaveChanges(); foreach (var nutrition in request.FoodNutritions) { TFoodNutrition tFoodNutrition = new TFoodNutrition() { Amount = nutrition.Amount, Enabled = true, Created = DateTime.Now, TFoodId = tFood.Id, TNutritionId = nutrition.Id, TNutritionUnitId = nutrition.UnitId, TReference = new TReference() { Enabled = true, RecordType = ReferenceRecordTypeEnum.FOOD_NUTIRTION } }; _dbContext.TFoodNutrition.Add(tFoodNutrition); } _dbContext.SaveChanges(); foreach (TFoodNutrition foodNutrition in tFood.TFoodNutritions) { foodNutrition.TReference.RecordId = foodNutrition.Id; _dbContext.TReference.Update(foodNutrition.TReference); } _dbContext.SaveChanges(); // Food Diets List <TFoodDiet> foodDiets = _dbContext.TFoodDiet.Where(x => x.TFood.Id == tFood.Id).ToList(); _dbContext.TFoodDiet.RemoveRange(foodDiets.Where(x => !request.Diets.Contains(x.TDietId))); int selectedDietsCount = _dbContext.TDiet.Where(x => request.Diets.Contains(x.Id)).Count(); if (selectedDietsCount != request.Diets.Count) { updateFoodResult.Status = false; updateFoodResult.Message = "Selected diets are invalid!"; return(Task.FromResult(updateFoodResult)); } foreach (int dietId in request.Diets.Where(x => !foodDiets.Any(z => z.TDietId == x))) { _dbContext.TFoodDiet.Add(new TFoodDiet() { TFoodId = tFood.Id, TDietId = dietId }); } // Food Allergies List <TFoodAllergy> foodAllergies = _dbContext.TFoodAllergy.Where(x => x.TFood.Id == tFood.Id).ToList(); _dbContext.TFoodAllergy.RemoveRange(foodAllergies.Where(x => !request.Allergies.Contains(x.TAllergyId))); int selectedAllergiesCount = _dbContext.TAllergy.Where(x => request.Allergies.Contains(x.Id)).Count(); if (selectedAllergiesCount != request.Allergies.Count) { updateFoodResult.Status = false; updateFoodResult.Message = "Selected Allergies are invalid!"; return(Task.FromResult(updateFoodResult)); } foreach (int AllergyId in request.Allergies.Where(x => !foodAllergies.Any(z => z.TAllergyId == x))) { _dbContext.TFoodAllergy.Add(new TFoodAllergy() { TFoodId = tFood.Id, TAllergyId = AllergyId }); } // Food Deficiencies List <TFoodDeficiency> foodDeficiencies = _dbContext.TFoodDeficiency.Where(x => x.TFood.Id == tFood.Id).ToList(); _dbContext.TFoodDeficiency.RemoveRange(foodDeficiencies.Where(x => !request.Deficiencies.Contains(x.TDeficiencyId))); int selectedDeficienciesCount = _dbContext.TDeficiency.Where(x => request.Deficiencies.Contains(x.Id)).Count(); if (selectedDeficienciesCount != request.Deficiencies.Count) { updateFoodResult.Status = false; updateFoodResult.Message = "Selected Deficiencies are invalid!"; return(Task.FromResult(updateFoodResult)); } foreach (int DeficiencyId in request.Deficiencies.Where(x => !foodDeficiencies.Any(z => z.TDeficiencyId == x))) { _dbContext.TFoodDeficiency.Add(new TFoodDeficiency() { TFoodId = tFood.Id, TDeficiencyId = DeficiencyId }); } // Food NutritionCondition List <TFoodNutritionCondition> userNutritionConditions = _dbContext.TFoodNutritionCondition.Where(x => x.TFood.Id == tFood.Id).ToList(); _dbContext.TFoodNutritionCondition.RemoveRange(userNutritionConditions.Where(x => !request.NutritionConditions.Contains(x.TNutritionConditionId))); int selectedNutritionConditionsCount = _dbContext.TNutritionCondition.Where(x => request.NutritionConditions.Contains(x.Id)).Count(); if (selectedNutritionConditionsCount != request.NutritionConditions.Count) { updateFoodResult.Status = false; updateFoodResult.Message = "Selected nutrition Conditions are invalid!"; return(Task.FromResult(updateFoodResult)); } foreach (int NutritionConditionId in request.NutritionConditions.Where(x => !userNutritionConditions.Any(z => z.TNutritionConditionId == x))) { _dbContext.TFoodNutritionCondition.Add(new TFoodNutritionCondition() { TFoodId = tFood.Id, TNutritionConditionId = NutritionConditionId }); } _dbContext.SaveChanges(); SqlParameter foodId = new SqlParameter("@FoodID", tFood.Id); _dbContext.Database.ExecuteSqlRaw("EXEC spCalculateFoodRefrence @FoodID", foodId); transaction.Complete(); updateFoodResult.Status = true; updateFoodResult.Result = new UpdateSupplierFoodOutput() { Id = tFood.Id }; } } catch (SqlException ex) { updateFoodResult.Status = false; updateFoodResult.Message = ex.ToJsonString(); } catch (Exception ex) { updateFoodResult.Status = false; updateFoodResult.Message = ex.ToJsonString(); } return(Task.FromResult(updateFoodResult)); }