public async Task <IActionResult> PutTransaction(int id, Transaction transaction) { if (id != transaction.Id) { return(BadRequest()); } _context.Entry(transaction).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!TransactionExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public async Task <IActionResult> PutItemcategories(int id, Itemcategories itemcategories) { if (id != itemcategories.Id) { return(BadRequest()); } _context.Entry(itemcategories).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ItemcategoriesExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public async Task Create(ResetToken resetToken) { _context.ResetTokens.Add(resetToken); await _context.SaveChangesAsync(); }
public async Task <ActionResult> InitializeTransaction([FromBody] TicketRequest ticketRequest) { PayStackResponse paystackresponse = new PayStackResponse(); PayRequest payRequest = new PayRequest(); var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json"); var configuration = builder.Build(); string secretkey = configuration["paystacksk"]; string endpoint = configuration["paystackitendpoint"]; string twilsid = configuration["twiliosid"]; string twiltoken = configuration["twilioauthtoken"]; string twilphone = configuration["twiliophone"]; //fetchdraw //fetch amount //var amount = _context.Items // .Where(u => u.Itemname == ticketRequest.itemname) // .Select(u => u.Ticketamount) // .SingleOrDefault(); DateTime curentdate = DateTime.Parse(DateTime.UtcNow.AddHours(1).ToString("yyyy-MM-dd HH:mm:ss")); //get item var item = await _context.Items.Where(u => u.Itemname == ticketRequest.itemname).FirstOrDefaultAsync(); //get draw for item var draw = await _context.Draws.Where(u => u.Itemid == item.Id).FirstOrDefaultAsync(); if (draw.Drawdate < curentdate) { paystackresponse.Status = "fail"; paystackresponse.Message = "Oopsy, you are a tiny bit late to this party. Please ensure to enter earlier for any of our Giveaways. All our giveaways end at 19:30"; paystackresponse.AuthorizationUrl = "null"; paystackresponse.AccessCode = "null"; paystackresponse.Reference = "null"; } else { if (draw.DrawType == DrawType.Paid) { var totalamount = Convert.ToDecimal(item.Ticketamount) * Convert.ToDecimal(ticketRequest.quantity); //paystack request params payRequest.email = ticketRequest.email; payRequest.amount = totalamount.ToString().Replace(".", ""); //payRequest.amount += "00"; DateTime curdate = DateTime.Parse(DateTime.UtcNow.AddHours(1).ToString("yyyy-MM-dd HH:mm:ss")); //DateTime nigerianTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(curdate, "W. Central Africa Standard Time"); HttpClient client = CreateWebRequest(); client.DefaultRequestHeaders.Add("Authorization", "Bearer " + secretkey); var resp = await client.PostAsJsonAsync(endpoint, payRequest); if (!resp.IsSuccessStatusCode) { Logger.LogInfo(" Customer Enquiry - error saving response:::" + resp.RequestMessage.ToString()); paystackresponse.Status = "fail"; paystackresponse.Message = "A Network Error Occurred"; paystackresponse.AuthorizationUrl = "null"; paystackresponse.AccessCode = "null"; paystackresponse.Reference = "null"; } else { var res = await resp.Content.ReadAsStringAsync(); var result = (TopLevel)JsonConvert.DeserializeObject(res, typeof(TopLevel)); //paystackresponse.Status = result.Status.ToString(); paystackresponse.Status = "success"; paystackresponse.Message = result.Message; paystackresponse.AuthorizationUrl = result.Data.AuthorizationUrl.ToString(); paystackresponse.AccessCode = result.Data.AccessCode; paystackresponse.Reference = result.Data.Reference; //saveticket in database //if (paystackresponse.Status == "Success") //{ //var tickets = new Tickets(); //tickets.Drawid = draw.Id; //tickets.Firstname = ticketRequest.firstname; //tickets.Lastname = ticketRequest.lastname; //tickets.Emailaddress = ticketRequest.email; //tickets.Phonenumber = ticketRequest.phonenumber; //Create tickets * quantity (Validate Method actually creates the ticket references) IList <Tickets> newcustomer = new List <Tickets>(); // add to context for (int i = 0; i < Convert.ToInt32(ticketRequest.quantity); i++) { Tickets ticket = new Tickets { Firstname = ticketRequest.firstname, Lastname = ticketRequest.lastname, Emailaddress = ticketRequest.email, Phonenumber = ticketRequest.phonenumber, Drawid = draw.Id, AccessCode = paystackresponse.AccessCode, PaystackReference = paystackresponse.Reference, ConfirmStatus = ConfirmStatus.Pending, Datemodified = curdate, Winstatus = WinStatus.NotWon }; newcustomer.Add(ticket); } ; _context.Tickets.AddRange(newcustomer); //} } //END PAID await _context.SaveChangesAsync(); } //draw type is free else { DateTime curdate = DateTime.Parse(DateTime.UtcNow.AddHours(1).ToString("yyyy-MM-dd HH:mm:ss")); //var potentialrecord = await _context.Tickets.Where(x => x.Drawid == draw.Id && x.Firstname == ticketRequest.firstname && x.Lastname == ticketRequest.lastname && x.Phonenumber == ticketRequest.phonenumber).FirstOrDefaultAsync(); var potentialrecord = await _context.Tickets.Where(x => x.Drawid == draw.Id && (x.Phonenumber == ticketRequest.phonenumber || x.Emailaddress == ticketRequest.email)).FirstOrDefaultAsync(); if (potentialrecord == null) { //generate ticket ref Random generator = new Random(); String r2, r; r2 = generator.Next(0, 99).ToString("D2"); r = generator.Next(0, 999999).ToString("D6"); var ticketRef = ticketRequest.firstname.Substring(0, 1).ToUpper() + ticketRequest.lastname.Substring(0, 1).ToUpper() + r2 + DateTime.Now.ToString("ss") + r; Tickets ticket = new Tickets { Firstname = ticketRequest.firstname, Lastname = ticketRequest.lastname, Emailaddress = ticketRequest.email, Phonenumber = ticketRequest.phonenumber, Drawid = draw.Id, AccessCode = paystackresponse.AccessCode, PaystackReference = paystackresponse.Reference, ConfirmStatus = ConfirmStatus.Confirmed, Datemodified = curdate, Ticketreference = ticketRef, Winstatus = WinStatus.NotWon }; _context.Tickets.Add(ticket); await _context.SaveChangesAsync(); // paystackresponse.Status = "success"; paystackresponse.Message = "Free ticket successfully procured"; paystackresponse.AccessCode = "Free"; //send email string sqlFormattedDate = draw.Drawdate.HasValue ? draw.Drawdate.Value.ToString("dd-MMMM-yyyy") : "<not available>"; //List<string> stringofticketids = new List<string>(); StringBuilder ticketrows = new StringBuilder(); //int i = 1; //send ticketrows.Append("<tr><td>1</td> <td>" + ticketRef + "</td></tr>"); var subject = "Ticket Request Successful"; //string ticketss = String.Join(",", stringofticketids); var body = ""; string body2 = @"<!DOCTYPE html> <html> <head> <style> </style> </head> <body> <img style='display:block;' align='right' src='https://www.dropbox.com/s/0p1flnq0voo7hn9/oftcoftlogosmall.jpg?raw=1' alt = 'felt lucky'></a>" + "<h1 style = 'font-family: Arial, sans-serif; font-size: 250%; color:#9370DB;'> Congratulations!!!" + ticket.Firstname + "</h1>" + "<p style = 'font-family: Gill Sans, sans-serif; font-size: 160%; color:#666666;'> You have successfully entered into the National Giveaways Draw. Find draw details and ticket reference(s) below</p>" + "<p style = 'font-family: Gill Sans, sans-serif; font-size: 160%; color:#666666;'> Draw Date: " + sqlFormattedDate + "</p>" + "<p style = 'font-family: Gill Sans, sans-serif; font-size: 160%; color:#666666;'> Draw Date: " + item.Itemdescription + "</p>" + "<p style = 'font-family: Gill Sans, sans-serif; font-size: 160%; color:#666666;'> Ticket Reference(s)</p>" + "<table style='border:1px solid #d9d9d9;width:50%;font-family:Gill Sans, sans-serif;text-align:left; font-size: 130%; color:#666666;'>" + "<tr style='background-color:#595959; color:#FFFFFF'><td>S/N</td><td>Ticket Reference</td></tr> " + ticketrows + // "</table>" + "<p></p>" + "<a href='https://www.nationalgiveaway.com'><img style='display:block; width:100%;height:100%;' src='https://www.dropbox.com/s/medm6f3npfr4gh5/freegift.jpg?raw=1' alt = 'feeling lucky'></a>" + "</body>" + "</html>"; //EmailSender sender = new EmailSender(); try { //await sender.Execute2(ticket.Emailaddress, subject, body, body2); await _emailService.ExecuteAsync(ticket.Emailaddress, subject, body, body2); } catch (Exception ex) { _logger.LogError(ex, ex.Message); } //end send email } else { paystackresponse.Status = "fail"; paystackresponse.Message = "You have already entered this giveaway"; } } } //string JSONresult = JsonConvert.SerializeObject(paystackresponse); return(new JsonResult(paystackresponse)); }
public async Task <IActionResult> CompleteRegistration(CompleteRegistrationViewModel model) { model.RememberMe = false; try { if (ModelState.IsValid) { ApplicationUser user = await _userManager.FindByEmailAsync(model.Email); var defaultpassword = _configuration.GetSection("DefaultPassword").Value; //if (_userManager.FindByEmailAsync(model.Email).Result == null) if (user != null) { if (model.Password == defaultpassword) { ViewBag.error = "true"; ViewBag.message = "Old password cannot be the same as new password"; return(View(model)); } string resetToken = await _userManager.GeneratePasswordResetTokenAsync(user); var resetResult = await _userManager.ResetPasswordAsync(user, resetToken, model.Password); if (resetResult.Succeeded) { user.EmailConfirmed = true; await _userManager.UpdateAsync(user); await _context.SaveChangesAsync(); var signInResult = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure : false); if (signInResult.Succeeded) { ViewBag.error = "false"; ViewBag.loggedin = "success"; _logger.LogInformation("User {0} logged in at {1}", model.Email, DateTime.UtcNow.AddDays(1).ToString()); return(RedirectToAction("Index", "Home")); } } else { ViewBag.error = "true"; ViewBag.message = "An error occurred, password could not be reset"; ModelState.AddModelError(string.Empty, "An error occurred, password could not be reset"); return(View(model)); } } else { ViewBag.error = "true"; ViewBag.message = "Invalid Credentials"; return(View(model)); } } } catch (Exception ex) { ViewBag.loading = "not loading"; //Log the error (uncomment ex variable name and write a log. ModelState.AddModelError("", "Unable to Complete Request"); ViewBag.error = "true"; ViewBag.message = "A Network Error Occurred"; } return(View(model)); }
public async Task <ActionResult> PostItems([FromBody] TicketRequest ticketRequest) { PayStackResponse paystackresponse = new PayStackResponse(); PayRequest payRequest = new PayRequest(); var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json"); var configuration = builder.Build(); string secretkey = configuration["paystacksk"]; string endpoint = configuration["paystackitendpoint"]; //fetchdraw //fetch amount //var amount = _context.Items // .Where(u => u.Itemname == ticketRequest.itemname) // .Select(u => u.Ticketamount) // .SingleOrDefault(); var item = await _context.Items.Where(u => u.Itemname == ticketRequest.itemname).FirstOrDefaultAsync(); var draw = await _context.Draws.Where(u => u.Itemid == item.Id).FirstOrDefaultAsync(); if (draw.DrawType == DrawType.Paid) { var totalamount = Convert.ToDecimal(item.Ticketamount) * Convert.ToDecimal(ticketRequest.quantity); //paystack request params payRequest.email = ticketRequest.email; payRequest.amount = totalamount.ToString().Replace(".", ""); //payRequest.amount += "00"; DateTime curdate = DateTime.Parse(DateTime.UtcNow.AddHours(1).ToString("yyyy-MM-dd HH:mm:ss")); //DateTime nigerianTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(curdate, "W. Central Africa Standard Time"); HttpClient client = CreateWebRequest(); client.DefaultRequestHeaders.Add("Authorization", "Bearer " + secretkey); var resp = await client.PostAsJsonAsync(endpoint, payRequest); if (!resp.IsSuccessStatusCode) { paystackresponse.Status = "false"; paystackresponse.Message = "A Network Error Occurred"; paystackresponse.AuthorizationUrl = "null"; paystackresponse.AccessCode = "null"; paystackresponse.Reference = "null"; } else { var res = await resp.Content.ReadAsStringAsync(); var result = (TopLevel)JsonConvert.DeserializeObject(res, typeof(TopLevel)); paystackresponse.Status = result.Status.ToString(); paystackresponse.Message = result.Message; paystackresponse.AuthorizationUrl = result.Data.AuthorizationUrl.ToString(); paystackresponse.AccessCode = result.Data.AccessCode; paystackresponse.Reference = result.Data.Reference; //saveticket in database if (paystackresponse.Status == "True") { //var tickets = new Tickets(); //tickets.Drawid = draw.Id; //tickets.Firstname = ticketRequest.firstname; //tickets.Lastname = ticketRequest.lastname; //tickets.Emailaddress = ticketRequest.email; //tickets.Phonenumber = ticketRequest.phonenumber; IList <Tickets> newcustomer = new List <Tickets>(); // add to context for (int i = 0; i < Convert.ToInt32(ticketRequest.quantity); i++) { Tickets ticket = new Tickets { Firstname = ticketRequest.firstname, Lastname = ticketRequest.lastname, Emailaddress = ticketRequest.email, Phonenumber = ticketRequest.phonenumber, Drawid = draw.Id, AccessCode = paystackresponse.AccessCode, PaystackReference = paystackresponse.Reference, ConfirmStatus = ConfirmStatus.Pending }; newcustomer.Add(ticket); } ; _context.Tickets.AddRange(newcustomer); } } //END PAID await _context.SaveChangesAsync(); } //draw type is free else { //var potentialrecord = await _context.Tickets.Where(x => x.Drawid == draw.Id && x.Firstname == ticketRequest.firstname && x.Lastname == ticketRequest.lastname && x.Phonenumber == ticketRequest.phonenumber).FirstOrDefaultAsync(); var potentialrecord = await _context.Tickets.Where(x => x.Drawid == draw.Id && (x.Firstname == ticketRequest.firstname || x.Lastname == ticketRequest.lastname || x.Phonenumber == ticketRequest.phonenumber || x.Emailaddress == ticketRequest.email)).FirstOrDefaultAsync(); if (potentialrecord == null) { Tickets ticket = new Tickets { Firstname = ticketRequest.firstname, Lastname = ticketRequest.lastname, Emailaddress = ticketRequest.email, Phonenumber = ticketRequest.phonenumber, Drawid = draw.Id, AccessCode = paystackresponse.AccessCode, PaystackReference = paystackresponse.Reference, ConfirmStatus = ConfirmStatus.Pending }; _context.Tickets.Add(ticket); await _context.SaveChangesAsync(); // paystackresponse.Status = "Success"; paystackresponse.Message = "Free ticket successfully procured"; } else { paystackresponse.Status = "Fail"; paystackresponse.Message = "Customer has already procured a ticket"; } } //string JSONresult = JsonConvert.SerializeObject(paystackresponse); return(new JsonResult(paystackresponse)); }