public async Task <bool> Issue() { SunwingVouchersEntities context = new SunwingVouchersEntities(); IssuanceManager issuanceManager = new IssuanceManager(context); #region test data //payLoad.Token = ""; PayLoad payLoad = new PayLoad() { Token = "130E3452920015FEB7EE83AD7B1E80850495C4A0DDA137498E39783DC7355453" }; #endregion bool isTokenValid = issuanceManager.IsAddNewVoucherPayloadValid(payLoad) && issuanceManager.IsValidToken(payLoad.Token); // add new voucher upload if (isTokenValid) { foreach (var processed in issuanceManager.GetUploadByStatus((int)VouchersUploadStatus.ProcessedWithSuccess)) { processed.Status = (int)VouchersUploadStatus.Issuing; issuanceManager.AddVouchersUpload(processed); //return await SaveProcessedToDb(processed); } } return(true); }
public async Task <VouchersUploadModel> GenerateVouchers(VouchersUploadModel vouchersUploadModel) { SunwingVouchersEntities context = new SunwingVouchersEntities(); IssuanceManager issuanceManager = new IssuanceManager(context); #region test data //payLoad.Token = ""; vouchersUploadModel.Token = "130E3452920015FEB7EE83AD7B1E80850495C4A0DDA137498E39783DC7355453"; Byte[] bytes = System.IO.File.ReadAllBytes(System.Web.Hosting.HostingEnvironment.MapPath(@"~/Content/Template/export.csv")); String base64encodedstring = Convert.ToBase64String(bytes); #endregion bool isTokenValid = issuanceManager.IsAddNewVoucherPayloadValid(vouchersUploadModel) && issuanceManager.IsValidToken(vouchersUploadModel.Token); // add new voucher upload if (isTokenValid) { // save this file to database first step when api will hit the data with base64 string // vouchersUploadModel.UploadContent = fileLocation; vouchersUploadModel.CsvString = base64encodedstring; vouchersUploadModel.CreatedOn = DateTime.Now; vouchersUploadModel.Status = (int)VouchersUploadStatus.NotProcessed; vouchersUploadModel.PayloadContent = JsonConvert.SerializeObject(vouchersUploadModel);// save all payload issuanceManager.AddVouchersUpload(vouchersUploadModel); } return(vouchersUploadModel); }
public async Task <bool> ProcessCsv() { try { SunwingVouchersEntities context = new SunwingVouchersEntities(); IssuanceManager issuanceManager = new IssuanceManager(context); foreach (var processed in issuanceManager.GetUploadByStatus((int)VouchersUploadStatus.Issuing)) { //processed.Status = (int)VouchersUploadStatus.Issuing; //issuanceManager.AddVouchersUpload(processed); await SaveProcessedToDb(processed); } return(true); } catch (Exception ex) { return(false); } }
public ApiUsersViewModel Authenticate(ApiUsersViewModel apiUsersViewModel) { if (apiUsersViewModel != null) { SunwingVouchersEntities context = new SunwingVouchersEntities(); IssuanceManager issuanceManager = new IssuanceManager(context); var user = context.ApiUsers.Where(x => x.UserName == apiUsersViewModel.UserName && x.Password == apiUsersViewModel.Password && !x.IsDeleted).FirstOrDefault(); apiUsersViewModel.Token = user.Token; // generate and save new token if (user != null) { user.Token = issuanceManager.GenerateUniqueToken(); user.TokenTimestamp = System.DateTime.Now.AddSeconds(BeerTicketConfigurationManager.TokenLifeTime); user.ModefiedOn = System.DateTime.Now; context.SaveChanges(); } } return(apiUsersViewModel); }
public async Task <VoucherModel> AddNewVoucher(VoucherModel voucherViewModel) { // VoucherViewModel voucherViewModel = new VoucherViewModel(); try { //#region Testing Data //// for testing //voucherViewModel.Token = "130E3452920015FEB7EE83AD7B1E80850495C4A0DDA137498E39783DC7355453"; //voucherViewModel.CampaignId = 46; //voucherViewModel.FirstName = "FirstName"; //voucherViewModel.LastName = "LastName"; //voucherViewModel.Expirydate = System.DateTime.Now.AddDays(10); //voucherViewModel.VoucherAmount = 100; // same //voucherViewModel.VoucherValue = 100; // same //voucherViewModel.Status = "Approved"; //voucherViewModel.Email = "*****@*****.**"; //voucherViewModel.IsEmailToSend = true; //voucherViewModel.SendVoucherAsPdf = true; //#endregion SunwingVouchersEntities context = new SunwingVouchersEntities(); IssuanceManager issuanceManager = new IssuanceManager(context); //You will need to validate the payload is correct and complete //Reject any payload that does not contain a valid token //Reject any payload where token has expired //Validate that the campaign ID sent exists bool isTokenValid = issuanceManager.IsAddNewVoucherPayloadValid(voucherViewModel) && issuanceManager.IsValidToken(voucherViewModel.Token); if (isTokenValid && issuanceManager.IsVoucherCampaignExistById(voucherViewModel.CampaignId)) { // insert data if (issuanceManager.AddVoucherMaster(voucherViewModel)) { StringBuilder voucherHtml = new StringBuilder(System.IO.File.ReadAllText(System.Web.Hosting.HostingEnvironment.MapPath(@"~/Content/Template/voucherEmail.html"))); voucherHtml.Replace("@@VoucherNo", voucherViewModel.VoucherId); voucherHtml.Replace("@@ValidTill", voucherViewModel.Expirydate.ToString()); //Send Email if (voucherViewModel.IsEmailToSend) { EmailService emailService = new EmailService(); IdentityMessage message = new IdentityMessage() { Destination = voucherViewModel.Email, Subject = "Coupon Voucher" }; //If deliver = 1, email = 1 and pdf = 1, send the voucher to the email address in HTML format, but attached a PDF version of the voucher as we if (voucherViewModel.SendVoucherAsPdf) { message.Body = voucherHtml.ToString(); var pdf = Pdf.From(voucherHtml.ToString()).OfSize(PaperSize.A4).Landscape().Content(); await emailService.SendAsyncWithAttachment(message, pdf, Guid.NewGuid().ToString() + ".pdf"); // send voucher simple as HTML } //If deliver = 1, email = 1 and pdf = 0, send the voucher to the email address in HTML format. else { await emailService.SendEmailWithoughtAttachAsync(message); } } } } } catch (Exception ex) { voucherViewModel.ErrorMsg = ex.Message.ToString(); return(voucherViewModel); } // all done status success voucherViewModel.IsSuccess = true; return(voucherViewModel); }
public async Task <bool> ProcessGenerate() { string userMessage = ""; try { SunwingVouchersEntities context = new SunwingVouchersEntities(); IssuanceManager issuanceManager = new IssuanceManager(context); foreach (var uploadToProcess in issuanceManager.GetUploadByStatus((int)VouchersUploadStatus.NotProcessed)) { if (!String.IsNullOrEmpty(uploadToProcess.CsvString)) { byte[] fileBytes = Convert.FromBase64String(uploadToProcess.CsvString); // process the csv and save the data into database string UploadCsvPath = BeerTicketConfigurationManager.UploadCsvPath; string RelativeCsvPath = BeerTicketConfigurationManager.RelativeCsvPath; var path = Server.MapPath(UploadCsvPath) + Convert.ToString(CultureInfo.InvariantCulture) + "\\"; string relativeExcelPath = RelativeCsvPath + Convert.ToString(CultureInfo.InvariantCulture) + "\\"; if (!Directory.Exists(path)) { // Try to create the directory. Directory.CreateDirectory(path); } //add prefix file upload id on filename for uniqueness string fileLocation = path + DateTime.Now.ToString("yyyyMMddHHmmss", CultureInfo.InvariantCulture) + "_" + "Uploaded.csv"; relativeExcelPath = relativeExcelPath + DateTime.Now.ToString("yyyyMMddHHmmss", CultureInfo.InvariantCulture) + "_" + "Uploaded.csv"; // if file with same name exists delete that if (System.IO.File.Exists(fileLocation)) { System.IO.File.Delete(fileLocation); } // write all the content in csv file using (var fs = new FileStream(fileLocation, FileMode.Create, FileAccess.Write)) { fs.Write(fileBytes, 0, fileBytes.Length); } uploadToProcess.UploadContent = fileLocation; uploadToProcess.Status = (int)VouchersUploadStatus.ProcessedWithSuccess; issuanceManager.AddVouchersUpload(uploadToProcess); ///return await SaveUploadToDb(uploadToProcess); } else {// if csv is not valid email userMessage = userMessage + "No Data In Csv with Id " + uploadToProcess.Id; // userMessage = } } } catch (Exception ex) { userMessage = ex.Message; } finally { if (!String.IsNullOrEmpty(userMessage)) { // shoot email EmailService emailService = new EmailService(); IdentityMessage message = new IdentityMessage() { Destination = BeerTicketConfigurationManager.AdminEmail, Subject = "Csv Is Not valid", Body = userMessage }; await emailService.SendEmailWithoughtAttachAsync(message); } } return(true); }
/// <summary> /// /// </summary> /// <param name="fileLocation"></param> /// <param name="relativeExcelPath"></param> /// <param name="IsFirstRowAsColumnNames"></param> /// <returns></returns> public async Task <bool> SaveProcessedToDb(VouchersUploadModel vouchersUploadModel) { int successCount = 0; // coupons successfully inserted int notSuccessCount = 0; // coupons not successfully inserted int totalProcessed = 0; // to track the current row of the sheet been iterated SunwingVouchersEntities context = new SunwingVouchersEntities(); IssuanceManager issuanceManager = new IssuanceManager(context); // added for testing, remove this line for production vouchersUploadModel.IsFirstRowAsColumnNames = true; List <string> ErrorMassage = new List <string>(); try { using (var reader = new StreamReader(vouchersUploadModel.UploadContent)) { List <string> csvRows = new List <string>(); while (!reader.EndOfStream) { var line = reader.ReadLine(); var values = line.Split(';'); csvRows.Add(values[0]); } // if first row is header remove that if (vouchersUploadModel.IsFirstRowAsColumnNames && csvRows.Count > 1) { csvRows.RemoveAt(0); } // check for validation for each row //read row data one by one foreach (var rowItem in csvRows) { // validate each row // and save the status to database // with status var validationData = CsvRowValidate(rowItem); ProcessVouchersUploadModel processVouchersUploadModel = new ProcessVouchersUploadModel(); processVouchersUploadModel.UploadId = vouchersUploadModel.Id; // if no error if (!validationData.Item1) { var voucher = await AddNewVoucher(validationData.Item3); if (voucher.IsSuccess) { // add the data of iterated csv row into db // add the column Content For holding all the processed Data here change processVouchersUploadModel.CsvContent = JsonConvert.SerializeObject(voucher); processVouchersUploadModel.Status = (int)ProcessVouchersUploadStatus.Success; successCount++; } else { processVouchersUploadModel.Status = (int)ProcessVouchersUploadStatus.NotSuccess; processVouchersUploadModel.ErrorMsg = voucher.ErrorMsg; notSuccessCount++; } //save the status in ProcessVouchersUpload with status success } else { //save the status in ProcessVouchersUpload with status not success processVouchersUploadModel.Status = (int)ProcessVouchersUploadStatus.NotSuccess; processVouchersUploadModel.ErrorMsg = "Row No " + totalProcessed + " process with errors: " + string.Join(", ", validationData.Item2 .Select(p => p.ToString()));// validationData.Item2.ToString(); notSuccessCount++; } issuanceManager.AddProcessVouchersUpload(processVouchersUploadModel); totalProcessed++; } } // vouchersUploadModel.Status = (int)VouchersUploadStatus.IssuedWithSuccess; vouchersUploadModel.SuccessfullyProcessed = successCount; vouchersUploadModel.NotSuccessfullyProcessed = notSuccessCount; vouchersUploadModel.TotalProcessed = totalProcessed; issuanceManager.AddVouchersUpload(vouchersUploadModel); return(true); } catch (Exception ex) { // add total process and unprocessed vouchersUploadModel.Status = (int)VouchersUploadStatus.IssuedWithNotSucces; issuanceManager.AddVouchersUpload(vouchersUploadModel); return(false); } }