public async Task <bool> Put(PlacedOrderDetail model) { var result = false; //if current user is Restaurant Admin, don't let them update order detail // because when update price will be wrong if (_authenticationDto.TypeId == (int)EAccountType.Admin || _authenticationDto.TypeId == (int)EAccountType.Mod || _authenticationDto.TypeId == (int)EAccountType.RestaurantAdmin) { return(result); } if (ModelState.IsValid) { result = await _placedOrderDetailBusiness.Update(model); //if (result) //{ // //get total price from order details // var totalDetailPrice = await _placedOrderDetailBusiness.GetTotalDetailPriceByOrderId // (_authenticationDto.RestaurantId, _authenticationDto.BranchId, model.PlacedOrderId); // // get and update order price by newest order details price // var order = await _placedOrderBusiness.GetById(_authenticationDto.RestaurantId, _authenticationDto.BranchId, model.PlacedOrderId); // if (order != null) // { // order.Price = totalDetailPrice; // } //} } return(result); }
public async Task <bool> Update(PlacedOrderDetail model) { var result = false; var record = await _placedOrderDetailRepository.Repo.FirstOrDefaultAsync(c => c.Id == model.Id); if (record != null) { record.OfferId = model.OfferId; record.MenuId = model.MenuId; record.SizeId = model.SizeId; record.Quantity = model.Quantity; record.MenuPrice = model.MenuPrice; record.Price = model.Price; record.IsFinish = model.IsFinish; record.Description = model.Description; var totalDetailPrice = await GetTotalDetailPriceByOrderId(record.RestaurantId, record.BranchId, record.PlacedOrderId); var placedOrder = await _placedOrderRepository.Repo.ToFilterByRole(f => f.RestaurantId, f => f.BranchId, record.RestaurantId, record.BranchId).Where(c => c.Id == record.PlacedOrderId) .FirstOrDefaultAsync(); if (placedOrder != null) { placedOrder.Price = (record.MenuPrice * record.Quantity) + totalDetailPrice; if (placedOrder.DiscountType == (int)EDiscountType.Percent) { placedOrder.FinalPrice = placedOrder.Price + placedOrder.Tax - ((placedOrder.Price * placedOrder.Discount) / 100); } else if (placedOrder.DiscountType == (int)EDiscountType.Money) { placedOrder.FinalPrice = placedOrder.Price + placedOrder.Tax - placedOrder.Discount; } await _placedOrderDetailRepository.SaveChangeAsync(); result = true; } } return(result); }
public async Task <int> Post(PlacedOrderDetail model) { var result = 0; //if current user is Restaurant Admin, don't let them add order detail // because when update price will be wrong if (_authenticationDto.TypeId == (int)EAccountType.Admin || _authenticationDto.TypeId == (int)EAccountType.Mod || _authenticationDto.TypeId == (int)EAccountType.RestaurantAdmin) { return(result); } if (ModelState.IsValid) { model.RestaurantId = _authenticationDto.RestaurantId; model.BranchId = _authenticationDto.BranchId; model.Status = 1; model.IsFinish = 0; model.Price = model.Quantity * model.MenuPrice; var modelInsert = await _placedOrderDetailBusiness.Add(model); result = modelInsert.Id; //if (result > 0) //{ // //get total price from order details // var totalDetailPrice = await _placedOrderDetailBusiness.GetTotalDetailPriceByOrderId // (model.RestaurantId, model.BranchId, model.PlacedOrderId); // // get and update order price by newest order details price // var order = await _placedOrderBusiness.GetById(model.RestaurantId, model.BranchId, model.PlacedOrderId); // if (order != null) // { // order.Price = totalDetailPrice; // await _placedOrderBusiness.UpdatePriceToPlacedOrder(_mapper.Map<PlacedOrder>(order)); // } //} } return(result); }
public async Task <PlacedOrderDetail> Add(PlacedOrderDetail model) { //var order = new PlacedOrder //{ // CreatedDate = DateTime.Now //}; //order.PlacedOrderDetail.Add(model); var entity = _placedOrderDetailRepository.Add(model); var totalDetailPrice = await GetTotalDetailPriceByOrderId(entity.RestaurantId, entity.BranchId, entity.PlacedOrderId); var placedOrder = await _placedOrderRepository.Repo.ToFilterByRole(f => f.RestaurantId, f => f.BranchId, entity.RestaurantId, entity.BranchId).Where(c => c.Id == entity.PlacedOrderId) .FirstOrDefaultAsync(); if (placedOrder != null) { placedOrder.Price = (entity.MenuPrice * entity.Quantity) + totalDetailPrice; if (placedOrder.DiscountType == (int)EDiscountType.Percent) { placedOrder.FinalPrice = placedOrder.Price + placedOrder.Tax - ((placedOrder.Price * placedOrder.Discount) / 100); } else if (placedOrder.DiscountType == (int)EDiscountType.Money) { placedOrder.FinalPrice = placedOrder.Price + placedOrder.Tax - placedOrder.Discount; } await _placedOrderDetailRepository.SaveChangeAsync(); return(entity); } return(null); }