Ejemplo n.º 1
0
        private dynamic HandleSaleorderDetailPage(dynamic arg)
        {
            if (!this.CurrentUser.HasClaim("admin"))
            {
                return(403);
            }

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

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

            var dummyPage = new Page();

            List <AffiliateRewardsClaim> rewardList    = null;
            List <AffiliateRewardsClaim> discountCodes = null;

            if (so.Customer != null && so.Customer.User != null)
            {
                int userId = so.Customer.User.Id;
                rewardList    = AffiliateRewardsClaim.GetRewards(this.SiteDatabase, userId);
                discountCodes = AffiliateRewardsClaim.GetDiscountCodes(this.SiteDatabase, userId);
            }

            var data = new
            {
                SaleOrder              = so,
                PaymentLogs            = so.GetPaymentLogs(this.SiteDatabase),
                RowVerions             = so.GetRowVersions(this.SiteDatabase),
                PaymentMethods         = AccountingSystem.AccountingSystemModule.GetCashAccounts(this.SiteDatabase),
                InventoryRequests      = this.SiteDatabase.Query <InventoryItem>().Where(i => i.SaleOrderId == so.Id).ToList(),
                LogisticsCompanies     = this.SiteDatabase.Query <LogisticsCompany>().ToList(),
                AffiliateRewardsClaims = rewardList,
                AffiliateDiscountCodes = discountCodes
            };


            return(View["/Admin/saleorderdetailmanager", new StandardModel(this, dummyPage, data)]);
        }
Ejemplo n.º 2
0
        private dynamic HandleMemberDetailPage(dynamic arg)
        {
            if (!this.CurrentUser.HasClaim("admin"))
            {
                return(403);
            }

            var member = this.SiteDatabase.GetById <NcbUser>((int)arg.id);

            var dummyPage = new Page();

            var data = new
            {
                Member                 = member,
                LogisticsCompanies     = this.SiteDatabase.Query <LogisticsCompany>().ToList(),
                AffiliateRewardsClaims = AffiliateRewardsClaim.GetRewards(this.SiteDatabase, member.Id),
                AffiliateDiscountCodes = AffiliateRewardsClaim.GetDiscountCodes(this.SiteDatabase, member.Id),
                PurchaseHistory        = SaleOrder.GetFromNcbUserId(member.Id, this.SiteDatabase)
            };


            return(View["Admin/memberprofile-admin", new StandardModel(this, dummyPage, data)]);
        }
Ejemplo n.º 3
0
        private dynamic HandleSaleorderDetailPage(dynamic arg)
        {
            if (!this.CurrentUser.HasClaim("admin"))
            {
                return(403);
            }

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

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

            var dummyPage = new Page();

            List <AffiliateRewardsClaim> rewardList    = null;
            List <AffiliateRewardsClaim> discountCodes = null;

            if (so.Customer != null && so.Customer.User != null)
            {
                int userId = so.Customer.User.Id;
                rewardList    = AffiliateRewardsClaim.GetRewards(this.SiteDatabase, userId);
                discountCodes = AffiliateRewardsClaim.GetDiscountCodes(this.SiteDatabase, userId);
            }

            if (so.InboundDate == null)
            {
                try
                {
                    // walk back the version and see which one got set to inbound
                    var lastInboundStatus = so.GetRowVersions(this.SiteDatabase)
                                            .Select(o => ((JObject)o).ToObject <SaleOrder>())
                                            .Where(s => s.Status == "Inbound")
                                            .OrderBy(s => s.__updatedAt)
                                            .Select(s => (DateTime?)s.__updatedAt)
                                            .LastOrDefault();

                    so.InboundDate = lastInboundStatus;
                    this.SiteDatabase.UpsertRecord(so);
                }
                catch (Exception)
                {
                }
            }

            // process the inventory
            InventoryItemModule.ProcessSaleOrderUpdate(this.SiteDatabase, so, false, DateTime.Now);

            var inventoryItems       = this.SiteDatabase.Query <InventoryItem>().Where(i => i.SaleOrderId == so.Id).ToList();
            var inventoryToTitleDict = new JObject();

            foreach (var item in inventoryItems)
            {
                var    product    = this.SiteDatabase.GetById <Product>(item.ProductId);
                string productSku = null;
                if (product.Url.StartsWith("/products/laptop-sku/"))
                {
                    productSku = product.Title; // before year 2021 sku system
                }
                else if (product.Url.Contains("/laptop/"))
                {
                    productSku = product.GetSKUNumber(so); // since year 2021 sku system
                }
                else
                {
                    productSku = product.Title;
                }
                inventoryToTitleDict.Add($"inv-{item.Id}", productSku);
            }

            var data = new
            {
                SaleOrder              = so,
                PaymentLogs            = so.GetPaymentLogs(this.SiteDatabase),
                RowVerions             = so.GetRowVersions(this.SiteDatabase),
                PaymentMethods         = AccountingSystem.AccountingSystemModule.GetCashAccounts(this.SiteDatabase),
                InventoryRequests      = inventoryItems,
                InventoryToTitleDict   = inventoryToTitleDict,
                LogisticsCompanies     = this.SiteDatabase.Query <LogisticsCompany>().ToList(),
                AffiliateRewardsClaims = rewardList,
                AffiliateDiscountCodes = discountCodes
            };


            return(View["/Admin/saleorderdetailmanager", new StandardModel(this, dummyPage, data)]);
        }