public bool QuoteRequestSMAttemptWithdraw(int id) { bool success = false; try { QuoteRequestDomain model = GetQuoteRequestById(id); QuoteRequestStateService StateHandler = new QuoteRequestStateService(model); // Verify this is valid action StateHandler.StateMachine.Fire(QREvent.Withdraw); // Update Status on THIS model model.Status = QRState.Draft; // Update status in DB QrUpdateStatusRequest QrUpdate = new QrUpdateStatusRequest { QrId = model.QrId, Status = model.Status }; UpdateQuoteRequestStatus(QrUpdate); } catch (Exception ex) { throw ex; } return(success); }
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ private static bool UpdateQuoteRequestStatus(QrUpdateStatusRequest model) { bool success = false; try { DataProvider.ExecuteNonQuery(GetConnection, "dbo.QuoteRequests_Update_Status" , inputParamMapper : delegate(SqlParameterCollection paramCollection) { paramCollection.AddWithValue("@StatusId", model.Status); paramCollection.AddWithValue("@Id", model.QrId); success = true; }); } catch (Exception ex) { throw ex; } return(success); }
// ///////////////////////////////////////////////////////////////////////////////////////// // Workflow Methods by Kevin Horan & Ravid Yoeun // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //- quotemuleFIXME - replace naked variables with Request Model public bool QuoteRequestSMAttemptCancel(int id, string userId) { bool success = false; // Cancelling is the right of the originator QuoteRequestDomain model = GetQuoteRequestById(id); //- quotemuleFIXME - this should be a check against the companyId instead of userId if (model.UserId == userId) { try { var StateHandler = new QuoteRequestStateService(model); // Verify this is valid action StateHandler.StateMachine.Fire(QREvent.Cancel); // Update Status on THIS model model.Status = QRState.Cancelled; // Update status in DB QrUpdateStatusRequest QrUpdate = new QrUpdateStatusRequest { QrId = model.QrId, Status = model.Status }; UpdateQuoteRequestStatus(QrUpdate); } //- quotemuleFIXME - Implement a catch for InvalidOperationException that sets success to false catch (Exception ex) { throw ex; } } return(success); }
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public bool QuoteRequestSMAttemptPending(int id) { bool success = false; try { QuoteRequestDomain model = GetQuoteRequestById(id); QuoteRequestStateService StateHandler = new QuoteRequestStateService(model); // Verify this is valid action StateHandler.StateMachine.Fire(QREvent.Review); // Update Status on THIS model model.Status = QRState.Pending; // Update status in DB QrUpdateStatusRequest QrUpdate = new QrUpdateStatusRequest { QrId = model.QrId, Status = model.Status }; UpdateQuoteRequestStatus(QrUpdate); //- Changing all Bids for QR to pending BidService BidService = new BidService(); QuoteRequestItemService QRIService = new QuoteRequestItemService(); List <QuoteRequestItemDomain> allQRItemsByQr = QRIService.GetAllQuoteRequestItems(model.QrId); if (allQRItemsByQr != null) { foreach (QuoteRequestItemDomain QRItem in allQRItemsByQr) { List <BidDomain> allBidsByQri = BidService.BidGetByQriId(QRItem.QrItemId); if (allBidsByQri != null) { foreach (BidDomain Bid in allBidsByQri) { BidDomain currentBid = Bid; QuoteRequestBidStatusRequest BidModel = BidService.GetQuoteRequestBidStatusId(currentBid.BidId); QuoteRequestBidStateService BidStateHandler = new QuoteRequestBidStateService(BidModel); BidStateHandler.StateMachine.Fire(QuoteRequestBidEvent.Review); currentBid.BidStatus = QuoteRequestBidState.Pending; QuoteRequestBidStatusRequest BidStateUpdate = new QuoteRequestBidStatusRequest { BidId = currentBid.BidId, BidStatus = currentBid.BidStatus }; BidService.UpdateQuoteRequestBidStatus(BidStateUpdate); } } } } } catch (InvalidOperationException) { return(success); } catch (Exception ex) { throw ex; } return(success); }