示例#1
0
        public void SaveRefreshToken(SaveRefreshTokenDTO tokenDto)
        {
            TblRefreshToken tblRefreshToken = new TblRefreshToken
            {
                ExpiryDate   = DateTime.Now.AddMinutes(tokenDto.ExpiryMinute),
                RefreshToken = tokenDto.RefreshToken,
                UserId       = tokenDto.UserId
            };

            db_Evoucher.TblRefreshToken.Add(tblRefreshToken);
            DeleteExpiryRefreshToken();
            db_Evoucher.SaveChanges();
        }
        public GeneratePromoCodeResponse GeneratePromoCode(GeneratePromoCodeRequest _request)
        {
            GeneratePromoCodeResponse response = new GeneratePromoCodeResponse();
            var order = (from o in db_Evoucher.TblPurchaseOrders
                         where o.PurchaseOrderNo == _request.PurchaseOrder_No &&
                         o.VoucherGenerated == false
                         select o
                         ).FirstOrDefault();

            if (order != null)
            {
                for (int i = 0; i < order.Quantity; i++)
                {
                    bool   isUnique  = false;
                    string promoCode = StringHelper.GeneatePromo();
                    string qrCodePath;
                    do
                    {
                        isUnique = !(from gp in db_Evoucher.TblGeneratedEvouchers
                                     where gp.PromoCode == promoCode
                                     select true
                                     ).FirstOrDefault();
                    } while (!isUnique);

                    qrCodePath = QRCodeHelper.GenerateQRCode(promoCode);

                    if (qrCodePath != "")
                    {
                        TblGeneratedEvoucher generatedEvoucher = new TblGeneratedEvoucher
                        {
                            ExpiryDate       = order.ExpiryDate,
                            OwnerName        = order.BuyerName,
                            OwnerPhone       = order.BuyerPhone,
                            PromoCode        = promoCode,
                            PurchaseOrderNo  = order.PurchaseOrderNo,
                            QrImagePath      = qrCodePath,
                            Status           = (int)RecordStatus.Active,
                            VoncherAmount    = order.VoncherAmount,
                            VoucherImagePath = order.ImagePath,
                            VoucherNo        = order.VoucherNo
                        };

                        db_Evoucher.TblGeneratedEvouchers.Add(generatedEvoucher);
                    }
                }
                order.VoucherGenerated = true;
            }
            else
            {
                response.StatusCode   = 404;
                response.ErrorType    = "Not-Found";
                response.ErrorMessage = "Record Not Found";
            }
            db_Evoucher.SaveChanges();
            response.PromoCodeGenerated = true;

            return(response);
        }
示例#3
0
        public SubmitEVoucherResponse NewEVoucher(SubmitEVoucherRequest _request, SaveImageDTO savedImage)
        {
            SubmitEVoucherResponse response = new SubmitEVoucherResponse();
            var vList = (from v in db_Evoucher.TblEvouchers
                         select new
            {
                v.Id
            }
                         ).ToList();

            int maxNo = 1;

            if (vList != null && vList.Count > 0)
            {
                maxNo = vList.Max(x => x.Id);
                maxNo++;
            }

            TblEvoucher evoucher = new TblEvoucher
            {
                BuyType          = _request.BuyType,
                CreatedBy        = LoginInformation.UserName,
                CreatedOn        = DateTime.Now,
                Description      = _request.Description,
                ExpiryDate       = _request.ExpiryDate,
                GiftPerUserLimit = _request.GiftPerUserLimit,
                MaxLimit         = _request.MaxLimit,
                PaymentMethod    = _request.PaymentMethod,
                SellingDiscount  = _request.SellingDiscount ?? 0,
                SellingPrice     = _request.SellingPrice,
                Status           = _request.Status,
                VoucherAmount    = _request.VoucherAmount,
                Title            = _request.Title,
                VoucherNo        = "EV-" + maxNo.ToString().PadLeft(4, '0'),
                ImagePath        = savedImage.SaveFilePath,
                Quantity         = _request.Quantity
            };

            db_Evoucher.TblEvouchers.Add(evoucher);
            db_Evoucher.SaveChanges();
            response.EVoucherNo = evoucher.VoucherNo;
            return(response);
        }
        public LoginResponse Login(LoginRequest _request)
        {
            LoginResponse response       = new LoginResponse();
            string        hashedPassword = StringHelper.GenerateHash(_request.Password);

            var user = (from u in db_Evoucher.TblUsers
                        join up in db_Evoucher.TblUserPassword
                        on u.UserId equals up.UserId
                        where u.LoginId == _request.LoginId && up.Password1 == hashedPassword
                        select u).FirstOrDefault();

            if (user != null)
            {
                GetGenerateTokenDTO getGenerateToken = new GetGenerateTokenDTO
                {
                    Audience                 = configuration["Audience"],
                    Issuer                   = configuration["Issuer"],
                    PrivateKey               = configuration["PrivateKey"],
                    TokenExpiryMinute        = Int32.Parse(configuration["TokenExpiryMinute"]),
                    RefreshTokenExpiryMinute = Int32.Parse(configuration["RefreshTokenExpiryMinute"]),
                    UserId                   = user.UserId,
                    UserName                 = user.DisplayName
                };
                TokenGeneratedDTO generatedToken = JWTHelper.GenerateToken(getGenerateToken);
                if (String.IsNullOrEmpty(generatedToken.ErrorStatus))
                {
                    response.AccessToken = generatedToken.AccessToken;
                    response.AccessTokenExpireMinutes  = generatedToken.TokenExpiresMinute;
                    response.RefreshToken              = generatedToken.RefreshToken;
                    response.RefreshTokenExpireMinutes = Int32.Parse(configuration["RefreshTokenExpiryMinute"]);
                    response.UserId = user.UserId;
                }
                else
                {
                    response.ErrorStatus = generatedToken.ErrorStatus;
                }
            }
            else
            {
                response.ErrorStatus = "Invalid user name or password!";
            }
            db_Evoucher.SaveChanges();
            return(response);
        }
示例#5
0
        public BuyEVoucherResponse BuyEVoucher(BuyEVoucherRequest _request)
        {
            BuyEVoucherResponse response = new BuyEVoucherResponse();
            string validateMsg           = "";

            validateMsg = ValidateBuyEVoucher(_request);
            if (string.IsNullOrEmpty(validateMsg))
            {
                using (var dbContextTransaction = db_Evoucher.Database.BeginTransaction())
                {
                    //Thread.Sleep(60000);

                    try
                    {
                        var tblEvoucher = (from v in db_Evoucher.TblEvouchers
                                           where v.VoucherNo == _request.VoucherNo
                                           select v
                                           ).FirstOrDefault();
                        if (tblEvoucher == null)
                        {
                            validateMsg = "No Voucher Found";
                        }
                        else
                        {
                            if (tblEvoucher.ExpiryDate < DateTime.Now && tblEvoucher.Status != (int)RecordStatus.Active)
                            {
                                validateMsg = $"{validateMsg}\r\nVoucher has been expired or out of stock.";
                            }
                            else if (tblEvoucher.Quantity <= 0)
                            {
                                validateMsg = $"{validateMsg}\r\nOut of stock.";
                            }
                            else if (tblEvoucher.Quantity < _request.Quantity)
                            {
                                validateMsg = $"{validateMsg}\r\nOrder quantity exceed the avaliable stock.";
                            }
                            else
                            {
                                var previousOrderList = (from p in db_Evoucher.TblPurchaseOrders
                                                         where p.VoucherNo == _request.VoucherNo &&
                                                         p.BuyerPhone == _request.BuyerPhone
                                                         select new
                                {
                                    p.BuyType,
                                    p.Quantity
                                }
                                                         ).ToList();

                                if (previousOrderList == null || previousOrderList.Count <= 0)
                                {
                                    if (_request.BuyType == Constant.EVOUCHER_BUY_TYPE_ONLYME &&
                                        _request.Quantity > tblEvoucher.MaxLimit
                                        )
                                    {
                                        validateMsg = $"{validateMsg}\r\nReach Limitted Quantity,You can't buy anymore.";
                                    }
                                    else if (_request.Quantity > tblEvoucher.GiftPerUserLimit)
                                    {
                                        validateMsg = $"{validateMsg}\r\nReach Limitted Gift Quantity,You can't buy anymore.";
                                    }
                                }
                                else
                                {
                                    var buyGroup = previousOrderList.GroupBy(x => x.BuyType)
                                                   .Select(x => new
                                    {
                                        BuyType  = x.First().BuyType,
                                        Quantity = x.Sum(x => x.Quantity)
                                    }).ToList();
                                    var OwnUsageQuantity  = buyGroup.Where(x => x.BuyType == Constant.EVOUCHER_BUY_TYPE_ONLYME).Select(x => x.Quantity).FirstOrDefault();
                                    var GiftUsageQuantity = buyGroup.Where(x => x.BuyType == Constant.EVOUCHER_BUY_TYPE_GIFT).Select(x => x.Quantity).FirstOrDefault();
                                    var totalUsage        = OwnUsageQuantity + GiftUsageQuantity;

                                    if (_request.Quantity + totalUsage > tblEvoucher.MaxLimit)
                                    {
                                        if (totalUsage > tblEvoucher.MaxLimit)
                                        {
                                            validateMsg = $"{validateMsg}\r\nReach Limitted Quantity,You can buy anymore.";
                                        }
                                        else
                                        {
                                            validateMsg = $"{validateMsg}\r\nReach Limitted Quantity,You can buy only {tblEvoucher.MaxLimit - totalUsage} voucher.";
                                        }
                                    }
                                    else if (_request.BuyType == Constant.EVOUCHER_BUY_TYPE_ONLYME &&
                                             _request.Quantity + OwnUsageQuantity > tblEvoucher.MaxLimit
                                             )
                                    {
                                        if (OwnUsageQuantity > tblEvoucher.MaxLimit)
                                        {
                                            validateMsg = $"{validateMsg}\r\nOwn Usage Reach Limitted Quantity,You can't buy anymore.";
                                        }
                                        else
                                        {
                                            validateMsg = $"{validateMsg}\r\nOwn Usage Reach Limitted Quantity,You can buy only {tblEvoucher.MaxLimit - OwnUsageQuantity} voucher.";
                                        }
                                    }
                                    else if (_request.Quantity + GiftUsageQuantity > tblEvoucher.GiftPerUserLimit)
                                    {
                                        if (GiftUsageQuantity > tblEvoucher.GiftPerUserLimit)
                                        {
                                            validateMsg = $"{validateMsg}\r\nGift Usage Reach Limitted Quantity,You can't buy anymore.";
                                        }
                                        else
                                        {
                                            validateMsg = $"{validateMsg}\r\nGift Usage Reach Limitted Quantity,You can buy only {tblEvoucher.MaxLimit - GiftUsageQuantity} voucher.";
                                        }
                                    }
                                }

                                if (validateMsg == "")
                                {
                                    var UpdatetblEvoucher = (from v in db_Evoucher.TblEvouchers
                                                             where v.VoucherNo == _request.VoucherNo
                                                             select v
                                                             ).FirstOrDefault();
                                    UpdatetblEvoucher.Quantity = UpdatetblEvoucher.Quantity - _request.Quantity;
                                    decimal totalPrice = UpdatetblEvoucher.SellingPrice;
                                    short   sellingDiscount;
                                    if (_request.PaymentMethod == UpdatetblEvoucher.PaymentMethod &&
                                        UpdatetblEvoucher.SellingDiscount != null)
                                    {
                                        var discountAmount = totalPrice * (decimal)((UpdatetblEvoucher.SellingDiscount ?? 0) / 100.0);
                                        totalPrice = totalPrice - discountAmount;
                                        if (totalPrice < 0)
                                        {
                                            totalPrice = 0;
                                        }
                                        sellingDiscount = UpdatetblEvoucher.SellingDiscount ?? 0;
                                    }
                                    else
                                    {
                                        sellingDiscount = 0;
                                    }

                                    var pOrderList = (from v in db_Evoucher.TblPurchaseOrders
                                                      select new
                                    {
                                        v.Id
                                    }
                                                      ).ToList();

                                    int maxNo = 1;
                                    if (pOrderList != null && pOrderList.Count > 0)
                                    {
                                        maxNo = pOrderList.Max(x => x.Id);
                                        maxNo++;
                                    }

                                    TblPurchaseOrder order = new TblPurchaseOrder
                                    {
                                        PurchaseOrderNo    = "PO-" + maxNo.ToString().PadLeft(6, '0'),
                                        BuyerName          = _request.BuyerName,
                                        BuyerPhone         = _request.BuyerPhone,
                                        BuyType            = _request.BuyType,
                                        OrderDate          = DateTime.Now,
                                        PaymentMethod      = _request.PaymentMethod,
                                        SellingDiscount    = sellingDiscount,
                                        Quantity           = _request.Quantity,
                                        Status             = (int)RecordStatus.Active,
                                        TotalSellingAmount = totalPrice,
                                        SellingPrice       = UpdatetblEvoucher.SellingPrice,
                                        ExpiryDate         = UpdatetblEvoucher.ExpiryDate,
                                        ImagePath          = UpdatetblEvoucher.ImagePath,
                                        VoncherAmount      = UpdatetblEvoucher.VoucherAmount,
                                        VoucherNo          = UpdatetblEvoucher.VoucherNo,
                                        VoucherGenerated   = false,
                                    };

                                    db_Evoucher.TblPurchaseOrders.Add(order);
                                    db_Evoucher.SaveChanges();

                                    dbContextTransaction.Commit();
                                    response.OrderNo           = order.PurchaseOrderNo;
                                    response.IsPurchaseSuccess = true;
                                }
                            }
                        }
                    }catch (Exception e)
                    {
                        response.StatusCode   = 500;
                        response.ErrorType    = "validation-error";
                        response.ErrorMessage = e.Message;

                        dbContextTransaction.Rollback();
                    }
                }
            }
            else
            {
                response.StatusCode   = 400;
                response.ErrorType    = "validation-error";
                response.ErrorMessage = validateMsg;
            }
            if (validateMsg != "")
            {
                response.StatusCode   = 400;
                response.ErrorType    = "validation-error";
                response.ErrorMessage = validateMsg;
            }

            return(response);
        }