Exemplo n.º 1
0
        public void RenewMembership(MembershipRenewal renewal)
        {
            this._tracer.Trace("Method: MembershipService.RenewMembership: MembershipNumber={0}", renewal.MembershipNumber);

            try
            {
                if (!string.IsNullOrEmpty(renewal.MembershipNumber))
                {
                    var sdk = ConnectionController.ConnectToCrm(this._tracer);
                    if (sdk != null)
                    {
                        _tracer.Trace("membershipTypeId={0}, amount={1}", renewal.MembershipType.MembershipTypeId, renewal.MembershipType.Price);

                        MembershipController mc = new MembershipController(sdk, this._tracer);

                        bool renewed = mc.RenewMembership(renewal);
                        this._tracer.Trace("mc.RenewMembership={0}", renewed);

                        if (!renewed)
                        {
                            throw new Exception("Unable to renew the membership, this might be because the membership is in an invalid state.");
                        }
                    }
                    else
                    {
                        string message = "Unable to connect to CRM. Check web.config";
                        this._tracer.Trace(message);
                        throw new Exception(message);
                    }
                }
                else
                {
                    throw new Exception("Invalid input. The Member cannot be null for a Membership");
                }
            }
            catch (FaultException <OrganizationServiceFault> fe)
            {
                if (fe.Detail != null)
                {
                    this._tracer.Trace(fe.Detail.ToString());
                }

                this._tracer.Trace(fe.ToString());

                string reference = renewal.MembershipNumber;
                throw new WebFaultException <Error>(ConvertToError(fe, reference), HttpStatusCode.InternalServerError);
            }
            catch (Exception ex)
            {
                this._tracer.Trace(ex.ToString());

                string reference = renewal.MembershipNumber;
                throw new WebFaultException <Error>(ConvertToError(ex, reference), HttpStatusCode.InternalServerError);
            }
            finally
            {
                // write to the log file
                this._tracer.WriteToLog(this._logPath);
            }
        }
Exemplo n.º 2
0
        public bool RenewMembership(MembershipRenewal renewal)
        {
            bool renewed = false;

            // Look for an Active Invoice, with a Pending Renewal Membership attached
            Entity membership = this.GetMembershipAndInvoice(renewal.MembershipNumber);

            if (membership == null)
            {
                Guid membershipId = this.GetLatestActiveMembershipId(renewal.MembershipNumber, true);
                if (membershipId != null && membershipId != Guid.Empty)
                {
                    // Tag the active membership for renewing
                    this.TriggerRenewal(membershipId);

                    // Plugin runs on change of 'mag_pendingrenewalcomplete' which triggers a sync plugin to create the renewal membership and invoice
                    // --

                    // Invoice should now be created, so this will now give us the new invoice/membership
                    membership = this.GetMembershipAndInvoice(renewal.MembershipNumber);
                }
                else
                {
                    _tracer.Trace("membershipNumber={0} is not valid for renewal.", renewal.MembershipNumber);
                }
            }

            if (membership != null)
            {
                this._tracer.Trace("membershipId={0}", membership.Id);

                this.UpdateMembershipAndInvoice(membership, renewal.MembershipType.MembershipTypeId, renewal.MembershipType.Price);

                renewed = true;
            }

            return(renewed);
        }
        public static void MembershipRenewalReminders()
        {
            HttpContextWrapper c = new HttpContextWrapper(HttpContext.Current);
            RouteData routeData = new RouteData();
            routeData.Values.Add("controller", typeof(MembershipSurfaceController).Name.ToLower().Replace("controller", ""));
            ControllerContext controllerContext = new ControllerContext(new RequestContext(c, routeData), new MembershipSurfaceController());
            ViewDataDictionary viewData = new ViewDataDictionary();
            TempDataDictionary tempData = new TempDataDictionary();


            DataManager dm = new DataManager();
            var members = dm.GetCurrentMemberships();
            //send reminder a week before

            var model = new MembershipRenewal();
            model.BaseUri = System.Web.HttpContext.Current.Request.Url.Scheme + "://" + System.Web.HttpContext.Current.Request.Url.Authority + System.Web.HttpContext.Current.Request.ApplicationPath.TrimEnd('/');
            ViewData.Model = model;
            var html = RazorHelpers.RenderRazorViewToString("~/Views/Reports/VehicleRegistrationReport.cshtml",
                ControllerContext, ViewData, TempData);
            var stream = pdfService.GenertatePdfFromHtml(html);


            foreach (var m in members.Where(n => n.EndDate.Date >= DateTime.UtcNow.Date.AddDays(-100)).ToList())
            {
                if(m.IsSubscription)
                    html = RazorHelpers.RenderRazorViewToString("")

            }

            foreach (var m in members.Where(n => n.EndDate.Date >= DateTime.UtcNow.Date).ToList())
            {
                Debug.WriteLine($"Membership a week from renewal. Member id: {m.Member} End date: {m.EndDate} MembershipId: {m.MembershipId}");
            }


        }
Exemplo n.º 4
0
        public static void MembershipRenewalReminders()
        {
            var httpContext = new HttpContextWrapper(HttpContext.Current ?? new HttpContext(new SimpleWorkerRequest("temp.aspx", "", new StringWriter())));

            var context = UmbracoContext.EnsureContext(httpContext, ApplicationContext.Current, new WebSecurity(httpContext, ApplicationContext.Current), UmbracoConfig.For.UmbracoSettings(), UrlProviderResolver.Current.Providers, false);

            DataManager dm      = new DataManager(context);
            var         members = dm.GetCurrentMemberships();


            var model = new MembershipRenewal();

            model.BaseUri = "https://www.wellslittletheatre.com";
            var    subscriptionService = new StripeSubscriptionService(SensativeInformation.StripeKeys.SecretKey);
            string price = string.Empty;

            //send reminder a week before
            foreach (
                var m in
                members.Where(
                    n =>
                    (n.IsSubscription == false || (n.IsSubscription && n.CancelAtEnd == false)) &&
                    n.MembershipType != MembershipType.Life &&
                    n.EndDate.Date == DateTime.UtcNow.Date.AddMonths(1) ||
                    n.EndDate.Date == DateTime.UtcNow.Date.AddDays(7)).ToList())
            {
                var member = dm.GetMember(m.Member);
                if (member != null)
                {
                    if (m.IsSubscription && m.StripeSubscriptionId != null)
                    {
                        try
                        {
                            if (member.StripeUserId.IsNotNullOrEmpty())
                            {
                                var subscription = subscriptionService.Get(m.StripeSubscriptionId);
                                price = (subscription.StripePlan.Amount / 100m).ToString("N");
                            }
                        }
                        catch
                        (StripeException e)
                        {
                            Log.Error(
                                $"There was a stripe error whilst trying to load the current subscription price for the membership{m.MembershipId}. The error was {e.Message}.");
                        }
                    }
                    model.MembershipType = m.MembershipTypeName;
                    model.DateDue        = m.EndDate.AddDays(1);
                    model.IsSubscription = m.IsSubscription;
                    model.Price          = price;
                    model.Name           = member.Name;
                    var fileContents =
                        GetFileContents("~/MembershipRenwalEmailContent/MembershipRenewalCommingUp.cshtml");
                    var html = Engine.Razor.RunCompile(fileContents, "MembershipRenewal", typeof(MembershipRenewal),
                                                       model);

                    EmailHelpers emailService = new EmailHelpers();
                    emailService.SendEmail(member.GetContactEmail, "Membership renewal is coming up!", html);
                    Log.Info($"Renewal reminder sent to {member.Name}");
                }
            }
        }