示例#1
0
        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));
        }
示例#2
0
        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);
        }
示例#6
0
        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);
                }
            }
        }
示例#7
0
        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));
            }
        }
示例#10
0
        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);
            }
        }
示例#11
0
        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);
            }
        }
示例#12
0
        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);
            }
        }
示例#13
0
        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);
            }
        }
示例#14
0
        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);
                }
            }
        }
示例#15
0
 public void ProviderPortfolioCreated(ProviderPortfolio providerPortfolio)
 {
 }