public async Task <bool> ReturnItems(ClaimsPrincipal userPrincipal, ReturnItemsRequest request) { await using var transaction = await _context.Database.BeginTransactionAsync(); try { var rentedItem = _context.RentedItems .FirstOrDefault(x => x.ItemId == request.ItemId && x.RentId == request.RentId); rentedItem.IsReturned = true; _context.RentedItems.Update(rentedItem); await _context.SaveChangesAsync(); var item = _itemService.Get(request.ItemId); item.Quantity += rentedItem.Quantity; _context.Items.Update(item); await _context.SaveChangesAsync(); var allItemsAreReturned = await _context.RentedItems .Where(x => x.RentId == request.RentId) .AllAsync(x => x.IsReturned); if (allItemsAreReturned) { var rent = _rentService.GetRent(request.RentId); rent.RentReturnTime = DateTime.Now; _context.Rents.Update(rent); await _context.SaveChangesAsync(); } await transaction.CommitAsync(); } catch (Exception) { await transaction.RollbackAsync(); return(false); } return(true); }
public void VerifyResetReturnBackOrderAndCancelItem() { string xml; ResetItemsShippingInformationRequest req1 = new ResetItemsShippingInformationRequest( "1234", "5678", EnvironmentType.Sandbox.ToString(), originalOrderID); req1.AddMerchantItemId("A1"); req1.AddMerchantItemId("B1"); req1.AddMerchantItemId("123456"); xml = Util.EncodeHelper.Utf8BytesToString(req1.GetXml()); AutoGen.ResetItemsShippingInformationRequest D = EncodeHelper.Deserialize(xml) as AutoGen.ResetItemsShippingInformationRequest; Assert.AreEqual(req1.GoogleOrderNumber, D.googleordernumber); req1 = new ResetItemsShippingInformationRequest(originalOrderID); req1.AddMerchantItemId("A1"); req1.AddMerchantItemId("B1"); req1.AddMerchantItemId("123456"); req1.SendEmail = true; xml = Util.EncodeHelper.Utf8BytesToString(req1.GetXml()); VerifyMessage(xml, typeof(AutoGen.ResetItemsShippingInformationRequest)); BackorderItemsRequest req2 = new BackorderItemsRequest( "1234", "5678", EnvironmentType.Sandbox.ToString(), originalOrderID); req2.AddMerchantItemId("A1"); req2.AddMerchantItemId("B1"); req2.AddMerchantItemId("123456"); xml = Util.EncodeHelper.Utf8BytesToString(req2.GetXml()); VerifyMessage(xml, typeof(AutoGen.BackorderItemsRequest)); req2 = new BackorderItemsRequest(originalOrderID); req2.AddMerchantItemId("A1"); req2.AddMerchantItemId("B1"); req2.AddMerchantItemId("123456"); req2.SendEmail = true; xml = Util.EncodeHelper.Utf8BytesToString(req2.GetXml()); CancelItemsRequest req3 = new CancelItemsRequest( "1234", "5678", EnvironmentType.Sandbox.ToString(), originalOrderID); req3.AddMerchantItemId("A1"); req3.AddMerchantItemId("B1"); req3.AddMerchantItemId("123456"); xml = Util.EncodeHelper.Utf8BytesToString(req3.GetXml()); VerifyMessage(xml, typeof(AutoGen.CancelItemsRequest)); req3 = new CancelItemsRequest( "1234", "5678", EnvironmentType.Sandbox.ToString(), originalOrderID, true); req3.AddMerchantItemId("A1"); req3.AddMerchantItemId("B1"); req3.AddMerchantItemId("123456"); xml = Util.EncodeHelper.Utf8BytesToString(req3.GetXml()); req3 = new CancelItemsRequest(originalOrderID); req3.AddMerchantItemId("A1"); req3.AddMerchantItemId("B1"); req3.AddMerchantItemId("123456"); xml = Util.EncodeHelper.Utf8BytesToString(req3.GetXml()); req3 = new CancelItemsRequest(originalOrderID, false); req3.AddMerchantItemId("A1"); req3.AddMerchantItemId("B1"); req3.AddMerchantItemId("123456"); xml = Util.EncodeHelper.Utf8BytesToString(req3.GetXml()); req3 = new CancelItemsRequest( "1234", "5678", EnvironmentType.Sandbox.ToString(), originalOrderID, "Comment", "Reason"); req3.AddMerchantItemId("A1"); req3.AddMerchantItemId("B1"); req3.AddMerchantItemId("123456"); xml = Util.EncodeHelper.Utf8BytesToString(req3.GetXml()); ReturnItemsRequest req4 = new ReturnItemsRequest( "1234", "5678", EnvironmentType.Sandbox.ToString(), originalOrderID); req4.AddMerchantItemId("A1"); req4.AddMerchantItemId("B1"); req4.AddMerchantItemId("123456"); xml = Util.EncodeHelper.Utf8BytesToString(req4.GetXml()); VerifyMessage(xml, typeof(AutoGen.ReturnItemsRequest)); req4 = new ReturnItemsRequest(originalOrderID); req4.AddMerchantItemId("A1"); req4.AddMerchantItemId("B1"); req4.AddMerchantItemId("123456"); req4.SendEmail = true; xml = Util.EncodeHelper.Utf8BytesToString(req4.GetXml()); }
public async Task <IActionResult> Return(ReturnItemsRequest request) { var result = await _rentedItemsService.ReturnItems(User, request); return(result ? (IActionResult)Ok() : NotFound()); }