예제 #1
0
        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"));
        }
예제 #2
0
        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));
        }
예제 #3
0
        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)));
        }