Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="userId">چه کاربری</param>
        /// <param name="title">با چه عنوانی</param>
        /// <param name="IsInvoice">پیش فاکتور است یا خیر</param>
        /// <param name="specialInvoice">ادمین به عنوان پیش فاکتور پیش فرض ثبت کرده یا خیر </param>
        /// <returns></returns>
        public async Task <int> AddFactor(int userId, string title, bool IsInvoice, bool specialInvoice)
        {
            var model = new ShopOrder()
            {
                Amount           = await _shopProductRepository.CalculateCartPriceNumber(userId),
                CreateDate       = DateTime.Now,
                IsSuccessed      = false,
                UserId           = userId,
                Title            = title,
                IsInvoice        = IsInvoice,
                PaymentAmount    = await _shopProductRepository.CalculateCartPriceNumber(userId),
                IsSpecialInvoice = specialInvoice
            };

            await AddAsync(model);

            var list = await DbContext.ShopProduct.Where(x => x.UserId == userId && !x.IsFinaly && !x.IsFactorSubmited).ToListAsync();

            // مشخص کردن اینکه این سبد محصولات مربوط به کدام فاکتور می باشد
            await _shopProductRepository.ChangeStatus(list, model.Id);

            // در جدول مربوط به آدرس
            // شماره فاکتور را قرار میدهیم تا بعد بتوانیم از آن استفاده کنیم
            await _userAddressRepository.UpdateShopOrderId(model.Id, userId);

            return(model.Id);
        }
        public async Task <int> CreatePaymentFactor(List <ShopProduct> list, int userId)
        {
            try
            {
                var tariff = CalculateTariff(userId) ?? 0;
                var model  = new ShopOrder()
                {
                    Amount               = await _shopProductRepository.CalculateCartPriceNumber(userId),
                    CreateDate           = DateTime.Now,
                    IsSuccessed          = false,
                    UserId               = userId,
                    TransferProductPrice = tariff,
                };



                model.PaymentAmount = model.Amount + tariff;

                await AddAsync(model);

                // در جدول مربوط به آدرس
                // شماره فاکتور را قرار میدهیم تا بعد بتوانیم از آن استفاده کنیم
                await _userAddressRepository.UpdateShopOrderId(model.Id, userId);

                // مشخص کردن اینکه این سبد محصولات مربوط به کدام فاکتور می باشد
                await _shopProductRepository.ChangeStatus(list, model.Id);



                return(model.Id);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }