예제 #1
0
        /// <summary>
        /// Convert Quote Entity  into Quote Object
        /// </summary>
        ///<param name="model">QuoteViewModel</param>
        ///<param name="QuoteEntity">DataAccess.Quote</param>
        ///<returns>QuoteViewModel</returns>
        public static PayFastViewModel ToPayFastViewModel(
            this DataAccess.Quote entity,
            decimal totalAmount,
            SaveResult saveResult)
        {
            var payFastVieModel = new PayFastViewModel
            {
                SaveResult           = saveResult,
                name_first           = entity.QuoteUser.FirstName,
                name_last            = entity.QuoteUser.Surname,
                email_address        = entity.QuoteUser.Email,
                cell_number          = entity.QuoteUser.ContactNo,
                m_payment_Id         = entity.QuoteNo,
                amount               = totalAmount,
                item_name            = "Subscription",
                item_description     = string.Empty,
                custom_int1          = entity.Id,
                email_confirmation   = 1,
                confirmation_address = entity.QuoteUser.Email,
                signature            = string.Empty
            };

            return(payFastVieModel);
        }
예제 #2
0
        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);
        }