private dynamic HandleSaleorderDetailPage(dynamic arg)
        {
            if (!this.CurrentUser.HasClaim("admin"))
            {
                return(403);
            }

            var id = (int)arg.id;
            var so = this.SiteDatabase.GetById <SaleOrder>(id);

            var dummyPage = new Page();

            var data = new
            {
                SaleOrder      = so,
                PaymentLogs    = so.GetPaymentLogs(this.SiteDatabase),
                RowVerions     = so.GetRowVersions(this.SiteDatabase),
                PaymentMethods = StatusList.GetAllStatus <PaymentMethod>()
            };

            return(View["/Admin/saleorderdetailmanager", new StandardModel(this, dummyPage, data)]);
        }
Beispiel #2
0
        private dynamic HandleSupportPage(dynamic arg)
        {
            var id = (string)arg.saleOrderIdentifier;
            var so = this.SiteDatabase.Query <SaleOrder>()
                     .Where(row => row.SaleOrderIdentifier == id)
                     .FirstOrDefault();

            if (so == null)
            {
                return(404);
            }

            //var isExpired = so.PaymentStatus == PaymentStatus.WaitingForPayment
            //        && so.Status == SaleOrderStatus.Confirmed
            //        && (so.__createdAt.AddDays(14) < DateTime.Now);

            //if (isExpired)
            //{
            //    so.Status = SaleOrderStatus.Cancel;
            //    this.SiteDatabase.UpsertRecord(so);
            //}

            var statusList = StatusList.GetAllStatus <SaleOrderStatus>();

            var paymentStatusList = StatusList.GetAllStatus <PaymentStatus>();

            var dummyPage = new Page();

            var data = new
            {
                StatusList        = statusList,
                PaymentStatusList = paymentStatusList,
                SaleOrder         = so,
                PaymentLogs       = so.GetPaymentLogs(this.SiteDatabase)
            };

            return(View["commerce-support", new StandardModel(this, dummyPage, data)]);
        }
Beispiel #3
0
        private dynamic HandleSupportPage(dynamic arg)
        {
            var id = (string)arg.saleOrderIdentifier;
            var so = this.SiteDatabase.Query <SaleOrder>()
                     .Where(row => row.SaleOrderIdentifier == id)
                     .FirstOrDefault();

            if (so == null)
            {
                return(404);
            }

            so.SiteSettings = null;

            Func <dynamic> response = () =>
            {
                // after 30 days, if no payment - we cancel it
                var isExpired = so.PaymentStatus == PaymentStatus.WaitingForPayment &&
                                so.Status == SaleOrderStatus.Confirmed &&
                                (so.__createdAt.AddDays(30) < DateTime.Now);

                if (isExpired)
                {
                    so.Status = SaleOrderStatus.Cancel;
                    this.SiteDatabase.UpsertRecord(so);
                }

                so.EnsuresSerialNumberVisible(this.SiteDatabase);

                var statusList        = StatusList.GetAllStatus <SaleOrderStatus>();
                var paymentStatusList = StatusList.GetAllStatus <PaymentStatus>();
                var dummyPage         = new Page();
                var data = new
                {
                    StatusList        = statusList,
                    PaymentStatusList = paymentStatusList,
                    SaleOrder         = so,
                    PaymentLogs       = so.GetPaymentLogs(this.SiteDatabase)
                };

                return(View["commerce-support", new StandardModel(this, dummyPage, data)]);
            };


            if (this.Request.Form.key != null)
            {
                string key = ((string)this.Request.Form.key).Trim();
                if (so.Customer != null &&
                    (so.Customer.PhoneNumber == key ||
                     so.Customer.Email == key))
                {
                    return(response());
                }
            }

            if (this.CurrentUser.HasClaim("Admin") &&
                this.Request.Url.HostName.StartsWith("local.") == false)
            {
                return(response());
            }

            if (this.CurrentUser.IsAnonymous)
            {
                return(View["commerce-support-login", new StandardModel(this, new Page(), new object())]);
            }

            // check whether this user has bought this sale order
            if (so.Customer == null || so.Customer.User == null)
            {
                return(View["commerce-support-login", new StandardModel(this, new Page(), new object())]);
            }

            if (so.Customer.User.Id != this.CurrentUser.Id)
            {
                return(View["commerce-support-login", new StandardModel(this, new Page(), new object())]);
            }

            return(response());
        }