public HttpResponseMessage CreatePortfolio(ConsumerPortfolio portfolio) { var modelValidation = portfolio.Validate(this.AccountSession, ValidationMode.Create); if (modelValidation.IsValid) { try { // create the consumer portfolio for this portfolio var consumerPortfolio = this.Uow.ConsumerPortfolios.CreatePortfolio(portfolio); // get the updated consumer member (with new consumer portfolio) var results = this.Uow.ConsumerMembers.GetScheme(this.AccountSession.MemberId); return(CreateSuccessResponse(new { success = true, results = results }, HttpStatusCode.OK)); } catch (Exception ex) { // log exception Logger.Error(string.Format("Exception detected attempting to create consumer principal via user {0}", this.AccountSession.MemberId), ex); return(CreateErrorResponse(ex)); } } // invalid parameters, generate response return(CreateInvalidResponse(modelValidation)); }
public HttpResponseMessage UpdatePortfolio(ConsumerPortfolio portfolio) { var modelValidation = portfolio.Validate(this.AccountSession, ValidationMode.Update); if (modelValidation.IsValid) { // portfolio ID var id = portfolio.Id; try { // create the consumer group for this portfolio this.Uow.ConsumerPortfolios.UpdatePortfolio(portfolio); // get updated portfolio scheme var results = this.Uow.ConsumerPortfolios.GetScheme(id); return(CreateSuccessResponse(new { success = true, results = results }, HttpStatusCode.OK)); } catch (Exception ex) { // log exception Logger.Error(string.Format("Exception detected attempting to update consumer portfolio {0} via user {1}", id, this.AccountSession.MemberId), ex); return(CreateErrorResponse(ex)); } } // invalid parameters, generate response return(CreateInvalidResponse(modelValidation)); }
public HttpResponseMessage UpdateRequestAsPending(ConsumerPortfolio portfolio) { var modelValidation = portfolio.Validate(this.AccountSession, ValidationMode.Pending); if (modelValidation.IsValid) { // portfolio ID var id = portfolio.Id; try { // update request state to pending var pendingPortfolio = this.Uow.ConsumerPortfolios.UpdatePortfolioAsPending(id); // let the agent handle processing of the request state change this.Agent.ConsumerRequestSetToPending(pendingPortfolio); // get updated portfolio scheme var results = this.Uow.ConsumerPortfolios.GetScheme(id); return(CreateSuccessResponse(new { success = true, results = results }, HttpStatusCode.OK)); } catch (Exception ex) { // log exception Logger.Error(string.Format("Exception detected attempting to update consumer portfolio request state to {0} for Id {1} via user {2}", RequestReceiptStates.Pending, id, this.AccountSession.MemberId), ex); return(CreateErrorResponse(ex)); } } // invalid parameters, generate response return(CreateInvalidResponse(modelValidation)); }
public void ResponseUpdatedAsUserRejected(Response response, ConsumerPortfolio consumerPortfolio, ProviderPortfolio providerPortfolio) { // get the recipients var members = this.Mongo.GetProviderPortfolioMembers(providerPortfolio.Id); // get the raw HTML template var html = MergeTemplates("Layout", "Provider/ResponseUserRejected"); foreach (var member in members) { // replace content html = html.Replace("[Name]", providerPortfolio.Principal.Name); // deliver the message DeliverMessage(member.Email, "Services Quote Rejected", html); } }
public void ResponseUpdatedAsAvailable(Response response, ConsumerPortfolio consumerPortfolio, ProviderPortfolio providerPortfolio) { // get the recipients var members = this.Mongo.GetProviderPortfolioMembers(providerPortfolio.Id); // get the raw HTML template var html = MergeTemplates("Layout", "Provider/ResponseAvailable"); foreach (var member in members) { // replace content html = html.Replace("[Name]", providerPortfolio.Principal.Name); html = html.Replace("[Domain]", Domain); // deliver the message DeliverMessage(member.Email, "New Available Opportunity", html); } }
public void ConsumerRequestSetToPending(ConsumerPortfolio consumerPortfolio) { // find all provider portfolios who can provide services for this var responses = this.Mongo.GenerateResponses(consumerPortfolio); // for each response, log a generation message and send a notification via the switchboard foreach (var response in responses) { // log the create message this.Logger.Info(string.Format("response {0} created for consumer portfolio {1} on behalf of provider portfolio {2} with the state {3}", response.Id, response.ConsumerPortfolioId, response.ProviderPortfolioId, response.State)); // get the provider portfolio for this response var providerPortfolio = this.Mongo.GetProviderPortfolio(response.ProviderPortfolioId); // send this to the switchboard for distribution this.Switchboard.ResponseUpdatedAsAvailable(response, providerPortfolio, consumerPortfolio); } }
public void ConsumerPortfolioReminded(ConsumerPortfolio consumerPortfolio) { // get consumer members for this portfolio var members = this.Mongo.GetConsumerPortfolioMembers(consumerPortfolio.Id); // get the raw HTML template var html = MergeTemplates("Layout", "Consumer/Reminder"); foreach (var member in members) { // replace content html = html.Replace("[Member]", member.FullName); html = html.Replace("[Domain]", Domain); // deliver the message DeliverMessage(member.Email, "Ready to Submit?", html); } }
public void ResponseUpdatedAsUserAccepted(Response response, ConsumerPortfolio consumerPortfolio, ProviderPortfolio providerPortfolio) { // get the recipients var members = this.Mongo.GetProviderPortfolioMembers(providerPortfolio.Id); // get the raw HTML template var html = MergeTemplates("Layout", "Provider/ResponseAccepted"); foreach (var member in members) { // replace content html = html.Replace("[Name]", providerPortfolio.Principal.Name); html = html.Replace("[Domain]", Domain); // deliver the message DeliverMessage(member.Email, "Quote Accepted", html); } // get administrator members for accepted responses var admins = this.Mongo.GetAdministratorMembers().Where(item => item.IsNotifiedOnAcceptedResponses); // get the raw HTML template html = MergeTemplates("Layout", "Administrator/AcceptedResponse"); // replace content html = html.Replace("[City]", consumerPortfolio.Preference.Proximity.City); html = html.Replace("[State]", consumerPortfolio.Preference.Proximity.State); html = html.Replace("[Quote]", Convert.ToString(response.Quote)); html = html.Replace("[BalancePaid]", Convert.ToString(response.BalancePaid)); html = html.Replace("[BalanceDue]", Convert.ToString(response.BalanceDue)); html = html.Replace("[Id]", response.Id); html = html.Replace("[Modified]", DateTimeHelper.ToLocalTime(response.Current.On).ToString()); foreach (var member in admins) { // replace content html = html.Replace("[Member]", member.FullName); // deliver the message DeliverMessage(member.Email, "Provider Response Accepted", html); } }
public void ResponseUpdatedAsPending(Response response, ConsumerPortfolio consumerPortfolio, ProviderPortfolio providerPortfolio) { var uri = HttpContext.Current.Request.Url; // get the recipients var members = this.Mongo.GetConsumerPortfolioMembers(consumerPortfolio.Id); // get the raw HTML template var html = MergeTemplates("Layout", "Consumer/ResponsePending"); foreach (var member in members) { // replace content html = html.Replace("[FirstName]", member.FirstName); html = html.Replace("[Domain]", Domain); // deliver the message DeliverMessage(member.Email, "Quote for Funeral Services", html); } }
public void ResponseUpdated(Response response, ConsumerPortfolio consumerPortfolio, ProviderPortfolio providerPortfolio) { // find the identities for this consumer portfolio ID var identities = this.Identities.Where(item => item.PortfolioId == consumerPortfolio.Id); if (!identities.Any()) { return; } // build a consumer response scheme to send out var responseScheme = new ConsumerResponseScheme(response, consumerPortfolio, providerPortfolio); // send this out to all client identities foreach (var identity in identities) { // send out the updated resoponse scheme this.HubContext.Clients.Client(identity.ConnectionId).ResponseUpdated(responseScheme); // trace the transmission of this response this.Logger.Trace(string.Format("updated response for Id {0} automatically transmitted to consumer portfolio {1} for user Id {2} with connection Id {3}", response.Id, identity.PortfolioId, identity.UserId, identity.ConnectionId)); } }
public void ConsumerRequestSetToPending(ConsumerPortfolio consumerPortfolio) { // get administrator members for consumer registrations var members = this.Mongo.GetAdministratorMembers().Where(item => item.IsNotifiedOnConsumerRegistrations); // get the raw HTML template var html = MergeTemplates("Layout", "Administrator/ConsumerRegistration"); // replace content html = html.Replace("[City]", consumerPortfolio.Preference.Proximity.City); html = html.Replace("[State]", consumerPortfolio.Preference.Proximity.State); html = html.Replace("[Id]", consumerPortfolio.Id); html = html.Replace("[Modified]", DateTimeHelper.ToLocalTime(consumerPortfolio.Modified.On).ToString()); foreach (var member in members) { // replace content html = html.Replace("[Member]", member.FullName); html = html.Replace("[Domain]", Domain); // deliver the message DeliverMessage(member.Email, "Consumer Account Registered", html); } }
public void ConsumerRequestSetToDraft(ConsumerPortfolio portfolio) { throw new NotImplementedException("Please update WebAgent.ConsumerRequestSetToDraft method"); }
public void ConsumerRequestSetToPending(ConsumerPortfolio consumerPortfolio) { // send out mail notifications this.Mailer.ConsumerRequestSetToPending(consumerPortfolio); }
public void ConsumerPortfolioReminded(ConsumerPortfolio consumerPortfolio) { // send reminder email to consumer member Mailer.ConsumerPortfolioReminded(consumerPortfolio); }
public void ConsumerPortfolioCreated(ConsumerMember member, ConsumerPortfolio consumerPortfolio) { // update the consumer hub identity this.ConsumerHub.UpdateIdentity(member); }
private void SendUpdatedReponse(Response response, ProviderPortfolio providerPortfolio, ConsumerPortfolio consumerPortfolio, ConsumerMember consumerMember = null) { // notify all interested consumers that the response has been updated this.ConsumerHub.ResponseUpdated(response, consumerPortfolio, providerPortfolio); // notify all interested providers that the response has been updated this.ProviderHub.ResponseUpdated(response, consumerPortfolio, providerPortfolio); }
public void ResponseUpdatedAsUserRejected(Response response, ProviderPortfolio providerPortfolio, ConsumerPortfolio consumerPortfolio) { // notify all interested parties that the response has been set to rejected SendUpdatedReponse(response, providerPortfolio, consumerPortfolio); // send out mail notifications this.Mailer.ResponseUpdatedAsUserRejected(response, consumerPortfolio, providerPortfolio); }