public IActionResult ChangeConfirmationStatus(AdvertiseRequest advReq) { var tt = from a in _context.AdvertiseRequest select a; tt = tt.Where(e => e.ID == advReq.ID); var advRequest = tt.ToList()[0]; var qq = from a in _context.Advertise select a; qq = qq.Where(e => e.ID == advReq.AdvID); var adv = qq.ToList()[0]; if (advReq.Type == "ToPlace") { adv.ConfirmationStatus = advReq.Status; _context.Advertise.Update(adv); _context.SaveChanges(); } else { advRequest.Status = advReq.Status; _context.AdvertiseRequest.Update(advRequest); _context.SaveChanges(); } return(RedirectToAction("MyRequests", "Advertises")); }
public async Task <IActionResult> Create([Bind(AdString)] Advertise advertise, List <IFormFile> imgs) { if (ModelState.IsValid) { advertise.PostTime = DateTime.Now; advertise.UserMail = HttpContext.Session.GetString("sEmail"); var to = from a in _context.User select a; to = to.Where(e => e.Role == "admin"); AdvertiseRequest req = new AdvertiseRequest(); req.Adv = advertise; req.From = Int32.Parse(HttpContext.Session.GetString("sId")); req.Type = AdvertiseRequest.RequestToPlace; if (to.Count() == 0) { advertise.ConfirmationStatus = Advertise.StatusConfirmed; _context.Add(req); } else { advertise.ConfirmationStatus = Advertise.StatusPending; foreach (var x in to) { req.To = x.ID; _context.Add(req); } } _context.Add(advertise); await _context.SaveChangesAsync(); foreach (var img in imgs) { if (img.Length > 0) { using (var ms = new MemoryStream()) { img.CopyTo(ms); var fileBytes = ms.ToArray(); Image image = new Image(); image.AdvertiseID = advertise.ID; image.FlatImage = fileBytes; _context.Add(image); await _context.SaveChangesAsync(); } } } return(RedirectToAction(nameof(Index))); } return(View(advertise)); }
public async Task <IActionResult> Rent(int id, DateTime rentFrom, DateTime rentTo) { var Add = _context.Advertise.Include(a => a.RentRanges).First(async => async.ID == id); if (rentFrom == DateTime.MinValue || rentTo == DateTime.MinValue) { return(RedirectToAction(nameof(Details), new { id = id })); } if (RangesIntersects(Add.RentRanges, rentFrom, rentTo)) { return(RedirectToAction(nameof(Details), new { id = id })); } var rentRange = new RentRange { RentFrom = rentFrom, RentTo = rentTo, Status = RentStatus.Pending }; var req = new AdvertiseRequest(); req.From = Int32.Parse(HttpContext.Session.GetString("sId")); req.Type = AdvertiseRequest.RequestToBook; req.Status = Advertise.StatusPending; req.AdvID = id; var to_id = from a in _context.User select a; to_id = to_id.Where(e => e.Email == Add.UserMail); req.To = to_id.ToList()[0].ID; _context.AdvertiseRequest.Add(req); Add.RentRanges.Add(rentRange); _context.SaveChanges(); var task = Task.Run(async() => { using (var es = _emailService.SendEmailAsync(Add.UserMail, "You have a request to rent your house", $"Your house {Add.Address} want to be rented")) { await es; } }); var task2 = Task.Run(async() => { using (var es = _emailService.SendEmailAsync(HttpContext.Session.GetString("sEmail"), "Booking request", $"Your booking request on hose {Add.Address} handling")) { await es; } }); return(RedirectToAction(nameof(Index))); }