public static bool CancelTransaction(Transaction transaction) { bool success = CreateForbiddenMatch(transaction.BuyerPostId, transaction.SellerPostId) > 0 && CreateForbiddenMatch(transaction.SellerPostId, transaction.BuyerPostId) > 0; if (success) { Dictionary <string, object> updateDictionary = new Dictionary <string, object>(); updateDictionary.Add("IsDeleted", 1); UpdateTransaction(transaction.TransactionId, updateDictionary); PostHandler.updatePostState(transaction.SellerPostId, 0); PostHandler.updatePostState(transaction.BuyerPostId, 0); Profile buyer = ProfileHandler.GetProfile(transaction.BuyerId); Profile seller = ProfileHandler.GetProfile(transaction.SellerId); Textbook book = TextbookHandler.getTextbook(transaction.TextbookId); EmailUtility.SendEmail( Convert.ToString(buyer.Email), Convert.ToString(buyer.Name), "Your transaction has been cancelled", String.Format("Item: {0}</br>{1} has cancelled the transaction with you!<br/>" + "We'll try to match you with someone else for this item.", book.BookTitle, seller.Name) ); EmailUtility.SendEmail( Convert.ToString(seller.Email), Convert.ToString(seller.Name), "Your transaction has been cancelled", String.Format("Item: {0}<br/>{1} has cancelled the transaction with you!<br/>" + "We'll try to match you with someone else for this item.", book.BookTitle, buyer.Name) ); Post sellerPost = PostHandler.getPost(transaction.SellerPostId); Post buyerPost = PostHandler.getPost(transaction.BuyerPostId); Task.Run(() => QueueWorker.AddPost(sellerPost)); Task.Run(() => QueueWorker.AddPost(buyerPost)); } return(success); }
public static bool ConfirmTransaction(Transaction transaction) { Dictionary <string, object> updateDictionary = new Dictionary <string, object>(); if (transaction.FinalPrice != null && transaction.Confirmed == Confirmed.ByNone) { updateDictionary.Add("FinalPrice", (int)transaction.FinalPrice); Profile buyer = ProfileHandler.GetProfile(transaction.BuyerId); Profile seller = ProfileHandler.GetProfile(transaction.SellerId); Textbook book = TextbookHandler.getTextbook(transaction.TextbookId); if (transaction.CurrentUser == ActionBy.Buyer) { updateDictionary.Add("Confirmed", (int)Confirmed.ByBuyer); EmailUtility.SendEmail( Convert.ToString(seller.Email), Convert.ToString(seller.Name), "Please confirm your transaction", String.Format("Item: {0}<br/>{1} has confirmed a transaction with you!<br/>" + "Please confirm it yourself to finalize the transaction.", book.BookTitle, buyer.Name) ); } else { updateDictionary.Add("Confirmed", (int)Confirmed.BySeller); EmailUtility.SendEmail( Convert.ToString(buyer.Email), Convert.ToString(buyer.Name), "Please confirm your transaction", String.Format("Item: {0}<br/>{1} has confirmed a transaction with you!<br/>" + "Please confirm it yourself to finalize the transaction.", book.BookTitle, seller.Name) ); } } else if (transaction.FinalPrice != null) { updateDictionary.Add("ConfirmPrice", (int)transaction.FinalPrice); updateDictionary.Add("Confirmed", (int)Confirmed.ByBoth); updateDictionary.Add("IsActive", 0); PostHandler.updatePostState(transaction.SellerPostId, 0, 0); PostHandler.updatePostState(transaction.BuyerPostId, 0, 0); Profile buyer = ProfileHandler.GetProfile(transaction.BuyerId); Profile seller = ProfileHandler.GetProfile(transaction.SellerId); Textbook book = TextbookHandler.getTextbook(transaction.TextbookId); EmailUtility.SendEmail( Convert.ToString(buyer.Email), Convert.ToString(buyer.Name), "Your transaction is now complete", String.Format("Item: {0}<br/>Your transaction with {1} has finalized.<br/>" + "Thank you for using BookSpade!", book.BookTitle, seller.Name) ); EmailUtility.SendEmail( Convert.ToString(seller.Email), Convert.ToString(seller.Name), "Your transaction is now complete", String.Format("Item: {0}<br/>Your transaction with {1} has finalized.<br/>" + "Thank you for using BookSpade!", book.BookTitle, buyer.Name) ); } UpdateTransaction(transaction.TransactionId, updateDictionary); return(true); }