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); }
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); }
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); }