public HttpResponseMessage UpdateProviderGroupAccountStatus(ProviderPortfolio portfolio) { var modelValidation = portfolio.Validate(this.AccountSession, ValidationMode.State); if (modelValidation.IsValid) { try { // update the account status var results = this.Uow.ProviderPortfolios.UpdateAccountStatus(portfolio); // let the agent handle any additional processing this.Agent.ProviderPortfolioAccountStatusChanged(results); // request successful return(CreateSuccessResponse(new { success = true, results = results }, HttpStatusCode.OK)); } catch (Exception ex) { Logger.Error(string.Format("Exception detected attempting to retrieve pending providers via user Id {0}", this.AccountSession.MemberId), ex); return(CreateErrorResponse(ex)); } } // invalid parameters, generate response return(CreateInvalidResponse(modelValidation)); }
public HttpResponseMessage CreateProviderPortfolio(ProviderPortfolio portfolio) { var modelValidation = portfolio.Validate(this.AccountSession, ValidationMode.Create); if (modelValidation.IsValid) { try { // create the provider portfolio for this principal var portfolioTemp = this.Uow.ProviderPortfolios.CreatePortfolio(portfolio); // get the updated provider member (with new provider portfolio) var results = this.Uow.ProviderMembers.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 provider portfolio via user {0}", this.AccountSession.MemberId), ex); return(CreateErrorResponse(ex)); } } // invalid parameters, generate response return(CreateInvalidResponse(modelValidation)); }
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); }
public void ProviderPortfolioCreated(ProviderMember member, ProviderPortfolio providerPortfolio) { // update the provider hub identity this.ProviderHub.UpdateIdentity(member); // notify all interested administrators that the provider portfolio has been created this.AdministratorHub.ProviderPortfolioCreated(providerPortfolio); // send out mail notifications this.Mailer.ProviderPortfolioCreated(providerPortfolio); }
public void ProviderPortfolioAccountStatusChanged(ProviderPortfolio providerPortfolio) { // generate responses if the account status is now active if (providerPortfolio.AccountStatus == AccountStatus.Active) { // generate responses for the newly created provider portfolio var responses = this.Mongo.GenerateResponses(providerPortfolio); // 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 consumer portfolio for this response var consumerPortfolio = this.Mongo.GetConsumerPortfolio(response.ConsumerPortfolioId); // send this to the switchboard for distribution this.Switchboard.ResponseUpdatedAsAvailable(response, providerPortfolio, consumerPortfolio); } } }
public void ProviderPortfolioCreated(ProviderPortfolio providerPortfolio) { // find the identities for any administrators var identities = this.Identities.Where(item => item.AccountType == AccountType.Administrator); if (!identities.Any()) { return; } // build a provider portfolio scheme to send out var providerPortfolioScheme = new ProviderPortfolioScheme(providerPortfolio); // send this out to all client identities foreach (var identity in identities) { // send out the created provider portfolio this.HubContext.Clients.Client(identity.ConnectionId).ProviderPortfolioCreated(providerPortfolioScheme); // trace the transmission of this response this.Logger.Trace(string.Format("created provider portfolio for Id {0} automatically transmitted to for user Id {1} with connection Id {2}", providerPortfolioScheme.Id, identity.UserId, identity.ConnectionId)); } }
public void ProviderPortfolioAccountStatusChanged(ProviderPortfolio providerPortfolio) { // send out mail notifications this.Mailer.ProviderPortfolioAccountStatusChanged(providerPortfolio); }
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 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 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 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 ProviderPortfolioAccountStatusChanged(ProviderPortfolio providerPortfolio) { if (providerPortfolio.AccountStatus == AccountStatus.Pending) { // get administrator members for provider registrations var members = this.Mongo.GetAdministratorMembers().Where(item => item.IsNotifiedOnProviderRegistrations); // get the raw HTML template var html = MergeTemplates("Layout", "Administrator/ProviderRegistration"); // replace content html = html.Replace("[Name]", providerPortfolio.Principal.Name); html = html.Replace("[Phone]", providerPortfolio.Principal.Phone); html = html.Replace("[Email]", providerPortfolio.Principal.Email); html = html.Replace("[Id]", providerPortfolio.Id); html = html.Replace("[Modified]", DateTimeHelper.ToLocalTime(providerPortfolio.Modified.On).ToString()); foreach (var member in members) { // replace content html = html.Replace("[Member]", member.FullName); // deliver the message DeliverMessage(member.Email, "Provider Account Registered", html); } } if (providerPortfolio.AccountStatus == AccountStatus.Active) { // get provider members var members = this.Mongo.GetProviderPortfolioMembers(providerPortfolio.Id); // get the raw HTML template var html = MergeTemplates("Layout", "Provider/ProviderAccountActivated"); // replace content html = html.Replace("[ProviderName]", providerPortfolio.Principal.Name); foreach (var member in members) { // replace content html = html.Replace("[Member]", member.FullName); // deliver the message DeliverMessage(member.Email, "Account Activated", html); } } if (providerPortfolio.AccountStatus == AccountStatus.Rejected) { // get provider members var members = this.Mongo.GetProviderPortfolioMembers(providerPortfolio.Id); // get the raw HTML template var html = MergeTemplates("Layout", "Provider/ProviderAccountRejected"); // replace content html = html.Replace("[ProviderName]", providerPortfolio.Principal.Name); foreach (var member in members) { // replace content html = html.Replace("[Member]", member.FullName); // deliver the message DeliverMessage(member.Email, "Account Rejected", html); } } }
public void ProviderPortfolioCreated(ProviderPortfolio providerPortfolio) { }