コード例 #1
0
ファイル: QuoteBL.cs プロジェクト: tbwerinofa/UniNetwork
        public bool ValIdatePayment(DataAccess.Quote entity, DataAccess.PayFastNotify payFast)
        {
            bool success = true;

            var totalAmount   = entity.QuoteDetails.Sum(a => a.SubscriptionTypeRuleAudit.AmountRand * a.Quantity);
            var payFastAmount = entity.PayFastNotifies.Sum(a => a.Amount_gross);

            if (payFastAmount != totalAmount)
            {
                success = false;
            }
            return(success);
        }
コード例 #2
0
ファイル: QuoteBL.cs プロジェクト: tbwerinofa/UniNetwork
        private void GenerateOrderDetail(
            IEnumerable <Cart> cartList,
            DataAccess.Quote quoteEntity)
        {
            List <DataAccess.OrderDetail> detailList = new List <DataAccess.OrderDetail>();

            foreach (var item in cartList)
            {
                var currentRow = new DataAccess.OrderDetail
                {
                    QuoteId       = quoteEntity.Id,
                    UnitPrice     = item.Product.Price,
                    ProductSizeId = item.ProductSizeId,
                    Quantity      = item.Count,
                    CreatedUserId = quoteEntity.CreatedUserId,
                };

                quoteEntity.OrderDetails.Add(currentRow);
            }
        }
コード例 #3
0
ファイル: QuoteBL.cs プロジェクト: tbwerinofa/UniNetwork
        private void GenerateQuoteDetail(
            QuoteViewModel model,
            DataAccess.Quote quoteEntity)
        {
            if (model.SubscriptionTypeRuleAuditIds.Any())
            {
                List <DataAccess.QuoteDetail> detailList = new List <DataAccess.QuoteDetail>();

                var distinctSubTypeRuleAudit = model.SubscriptionTypeRuleAuditIds.Distinct().ToArray();

                for (int i = 0; i < distinctSubTypeRuleAudit.Count(); i++)
                {
                    var currentRow = new DataAccess.QuoteDetail
                    {
                        QuoteId = quoteEntity.Id,
                        SubscriptionTypeRuleAuditId = distinctSubTypeRuleAudit[i],
                        Quantity      = model.QuantityIds[i],
                        ItemNo        = i + 1,
                        CreatedUserId = model.UserId,
                    };
                    quoteEntity.QuoteDetails.Add(currentRow);
                }
            }
        }
コード例 #4
0
ファイル: QuoteBL.cs プロジェクト: tbwerinofa/UniNetwork
        public async Task <PayFastViewModel> SaveQuoteFromCart(string cartId, string sessionUserId)
        {
            var payFastVieModel = new PayFastViewModel();
            QuoteStatusViewModel quoteStatus = await _quoteStatusBL.GetEntityByDiscr(OrderStatusRef.New);

            var quoteEntity = new DataAccess.Quote {
                QuoteNo       = Guid.NewGuid().ToString().Substring(0, 8).ToUpper(),
                QuoteStatusId = quoteStatus.Id,
                FinYearId     = _finYearBL.GetCurrentFinYearId(),
                CreatedUserId = sessionUserId,
                QuoteUserId   = sessionUserId
            };


            SaveResult saveResult = new SaveResult();
            Dictionary <bool, string> dictionary = new Dictionary <bool, string>();

            var cartList = _context.Cart
                           .Include(a => a.ProductSize.Size)
                           .Include(a => a.ProductSize.Product)
                           .Include(a => a.Product)
                           .Where(a => a.RecordId == cartId);

            try
            {
                this.GenerateOrderDetail(cartList, quoteEntity);


                saveResult = await AddEntity(quoteEntity);

                if (saveResult.IsSuccess)
                {
                    saveResult = await EmptyCart(cartList);
                }
                if (saveResult.IsSuccess)
                {
                    saveResult.Discriminator = quoteEntity.QuoteNo;
                    saveResult.Id            = quoteEntity.Id;


                    quoteEntity = await _context.Quote.Include(a => a.QuoteUser).IgnoreQueryFilters().FirstOrDefaultAsync(a => a.Id == quoteEntity.Id);

                    payFastVieModel = new PayFastViewModel
                    {
                        SaveResult           = saveResult,
                        name_first           = quoteEntity.QuoteUser.FirstName,
                        name_last            = quoteEntity.QuoteUser.Surname,
                        email_address        = quoteEntity.QuoteUser.Email,
                        cell_number          = quoteEntity.QuoteUser.ContactNo,
                        m_payment_Id         = quoteEntity.QuoteNo,
                        amount               = cartList.Sum(a => a.Product.Price),
                        item_name            = "Order",
                        item_description     = string.Empty,
                        custom_int1          = quoteEntity.Id,
                        email_confirmation   = 1,
                        confirmation_address = quoteEntity.QuoteUser.Email,
                        signature            = string.Empty,
                        FullName             = quoteEntity.QuoteUser.FirstName + " " + quoteEntity.QuoteUser.Surname,
                        MessageTemplate      = quoteEntity.QuoteStatus.MessageTemplate.ToViewModel(new MessageTemplateViewModel())
                    };
                }
                //if(saveResult.IsSuccess)
                //{
                //    //queuemail
                //    var fullName = quoteEntity.QuoteUser.People.FirstOrDefault().Title.Name + " "  + quoteEntity.QuoteUser.People.FirstOrDefault().FirstName + " " + quoteEntity.QuoteUser.People.FirstOrDefault().Surname;
                //    _queuedEmail.QueueQuote(quoteEntity.QuoteStatu.MessageTemplate, quoteEntity.QuoteUser.Email, fullName,saveResult.ByteArray);
                //}
            }
            catch (DbUpdateException upDateEx)
            {
                var    results = upDateEx.GetSqlerrorNo();
                string msg     = results == (int)SqlErrNo.FK ? ConstEntity.MissingValueMsg : ConstEntity.UniqueKeyMsg;
                saveResult = dictionary.GetValidateEntityResults(msg).ToSaveResult();
                throw upDateEx;
            }
            catch (Exception ex)
            {
                saveResult.Message = CrudError.SaveErrorMsg;
                throw ex;
            }

            return(payFastVieModel);
        }
コード例 #5
0
        public void GenerateList(
            QuoteViewModel model,
            DataAccess.Quote quote)
        {
            foreach (var item in quote.QuoteDetails)
            {
                var subscription = new DataAccess.Subscription
                {
                    CreatedUserId = model.SessionUserId,
                    QuoteDetailId = item.Id,
                    MemberId      = model.ParentMemberId,
                    StartDate     = DateTime.Now,
                };

                if (item.SubscriptionTypeRuleAudit.ActiveMonths.HasValue)
                {
                    DateTime endDate = (subscription.StartDate).AddMonths((int)item.SubscriptionTypeRuleAudit.ActiveMonths);
                    subscription.EndDate = endDate;
                }

                var subscriptionHistory = new DataAccess.SubscriptionHistory
                {
                    CreatedUserId  = model.SessionUserId,
                    QuoteDetailId  = item.Id,
                    MemberId       = model.ParentMemberId,
                    SubscriptionId = subscription.Id,
                    StartDate      = subscription.StartDate,
                    EndDate        = subscription.EndDate
                };

                subscription.SubscriptionHistories.Add(subscriptionHistory);
                item.Subscriptions.Add(subscription);

                if (item.SubscriptionTypeRuleAudit.HasRelations && model.MemberListIds != null)
                {
                    foreach (var memberId in model.MemberListIds)
                    {
                        subscription = new DataAccess.Subscription
                        {
                            CreatedUserId = model.SessionUserId,
                            QuoteDetailId = item.Id,
                            MemberId      = memberId,
                            StartDate     = DateTime.Now,
                        };

                        if (item.SubscriptionTypeRuleAudit.ActiveMonths.HasValue)
                        {
                            DateTime endDate = (subscription.StartDate).AddMonths((int)item.SubscriptionTypeRuleAudit.ActiveMonths);
                            subscription.EndDate = endDate;
                        }

                        subscriptionHistory = new DataAccess.SubscriptionHistory
                        {
                            CreatedUserId  = model.SessionUserId,
                            QuoteDetailId  = item.Id,
                            MemberId       = memberId,
                            SubscriptionId = subscription.Id,
                            StartDate      = subscription.StartDate,
                            EndDate        = subscription.EndDate
                        };

                        subscription.SubscriptionHistories.Add(subscriptionHistory);
                        item.Subscriptions.Add(subscription);
                    }
                    //all relations
                    //generate subscriptions
                    //generate subscriptions history
                }
            }
            ;
        }