public IActionResult contact_user(int id, int Raiting, double put) { var product = _context.Products.Include(x => x.Publication.User.Profile.User.SalesTransactions).Include(p => p.Publication.User).First(i => i.Id == id); if (product.Publication.UserId != _context.UserActive().Id) { var trans = new Transaction(); trans.Id = 1; var noti = new Notification(); noti.Id = 1; while (_context.Transaction.Select(a => a.Id).ToList().Contains(trans.Id)) { Random a = new Random(); trans.Id = (int)a.Next(3, 10000); } while (_context.Notifications.Select(a => a.Id).ToList().Contains(noti.Id)) { Random a = new Random(); noti.Id = (int)a.Next(3, 10000); } trans.Seller = product.Publication.User; trans.Product = product; trans.ProductId = id; trans.SellerId = product.Publication.UserId; trans.Status = "Pendiente"; trans.BuyerId = _context.UserActive().Id; trans.Buyer = _context.UserActive(); trans.Amount = Raiting; trans.TotalPurchase = put; noti.Messasge = trans.Buyer.FirstName + " " + "está interesado en tu producto"; noti.Type = 1; noti.UserId = trans.SellerId; noti.Checked = false; if (ModelState.IsValid) { _context.Add(noti); _context.Add(trans); _context.SaveChanges(); } return(View(trans)); } else { ViewData["ERROR"] = "No puedes comprar tus productos"; return(RedirectToAction("Error", "Transactions")); } }
public async Task <IActionResult> Create([Bind("ExpireDate,Periodicity,RelatedCities,Id,Tags")] Alert alert) { if (ModelState.IsValid) { alert.UserId = _context.UserActive().Id; _context.Add(alert); int i = _context.UserActive().Alerts.Count(); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(alert)); }
public IActionResult MySales() { var user = _context.Users.Include(u => u.SalesTransactions).Include(u => u.Publications).First(u => u.IsActive == true); ViewData["SaleTransactions"] = _context.Transaction.Where(t => t.BuyerId == user.Id); ViewData["Products"] = _context.UserActive().SalesTransactions.Select(p => p.Product).ToList(); var us = _context.UserActive(); var pp = _context.Transaction.Include(r => r.Product.Photos).Include(u => u.Buyer).Where(t => t.SellerId == us.Id).Where(t => t.Status.Equals("Vendido")).ToList(); return(View(pp)); }
//public IActionResult Index() //{ // return View(_context); //} public IActionResult Index(string email, string password) { if (email == null && password == null) { return(View(_context)); } else { if (_context.Users.First(p => p.Email.Equals(email)) == null) { ViewData["ERROR"] = "No existe un usuario con ese correo"; return(RedirectToAction(nameof(Login))); } else { var user = _context.Users.First(p => p.Email.Equals(email)); if (user != null && user.Email.Equals(password)) { ViewData["Usuario"] = user.FirstName; _context.Users.First(x => x.IsActive).IsActive = false; user.IsActive = true; ViewData["UsuarioAct"] = _context.UserActive().FirstName; _context.SaveChanges(); return(View(_context)); } else { return(RedirectToAction(nameof(Login))); } } } }
public async Task <IActionResult> Create([Bind("Title,Description,Tags,RelatedCities,Price,Units,CategoryId,SubCategoryId,IsExpress,ExpiryDate,Id")] Product product, IFormFile image) { if (ModelState.IsValid) { product.Id = 11; while (_context.Products.Select(x => x.Id).Contains(product.Id)) { Random a = new Random(); product.Id = (int)a.Next(12, 10000); } User s = _context.UserActive(); Publication p = new Publication() { Id = product.Id, Status = Models.Enum.ProductStatus.Active, UserId = s.Id, User = s }; _context.Publication.Add(p); product.PublicationId = p.Id; product.CityId = _context.UserActive().CityId; product.Insignia = Models.Enum.TypeInsignias.New; product.Date = (DateTime.Now); product.Status = Models.Enum.ProductStatus.Active; if (image != null && image.Length > 0) { var fileName = Path.Combine(_environment.WebRootPath, "users", image.FileName); await image.CopyToAsync(new FileStream(fileName, FileMode.Create)); int PId = 11; while (_context.Photos.Select(x => x.Id).Contains(PId)) { Random b = new Random(); PId = (int)b.Next(12, 10000); } Photo a = new Photo() { Id = PId, ProductId = product.Id, Route = "/users/" + image.FileName }; _context.Photos.Add(a); } if (product.IsExpress == false) { product.ExpiryDate = null; } else { product.Insignia = Models.Enum.TypeInsignias.VentaExpress; } _context.Products.Add(product); Notification n = new Notification { UserId = _context.UserActive().Id, Checked = false, Messasge = "Se ha añadido un producto: " + product.Title }; _context.Notifications.Add(n); var tags = product.Tags.Split(','); var cities = product.RelatedCities.Split(','); foreach (var x in _context.Alerts) { var t = x.Tags.Split(',').Intersect(tags); var c = x.RelatedCities.Split(',').Intersect(cities); if (c.Count() != 0 && x.ExpireDate > DateTime.Now) { SendEmail(_context.Users.First(y => y.Id == x.UserId).Email, "Hay un nuevo producto que te puede interesar: " + product.Title + ".\nSe encuentra en la ciudad de " + c.First()); } else if (t.Count() != 0 && x.ExpireDate > DateTime.Now) { SendEmail(_context.Users.First(y => y.Id == x.UserId).Email, "Hay un nuevo producto que te puede interesar: " + product.Title + ".\nSe encuentra en la categoría de " + t.First()); } } await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(product)); }
// GET: Questions //[HttpGet("/Questions/{id}")] public IActionResult Index(int id) { //Consulta todas las preguntas que tiene un producto var sqlQ = from q in _context.Questions where q.ProductId == id select q; //Consulta todas las respuestas que tienen las preguntas del producto anterior var sqlA = from a in _context.Answers where a.Question.ProductId == id select a; //Consulas para llegar al usuario del producto var sqlPublic = from p in _context.Products where p.Id == id select p; var sqlUs = from u in _context.Publication where u.Id == sqlPublic.First().PublicationId select u; var sqlEmail = from e in _context.Users where e.Id == sqlUs.First().Id select e; if (sqlEmail.Count() > 0) { if (_context.UserActive().Id == sqlEmail.First().Id) { ViewData["owner"] = "true"; } else { ViewData["owner"] = "false"; } } //Diccionario para pasar las preguntas y las respuestas a estas, la key es el Id de la pregunta //El arreglo representa en su primera posicion la pregunta, y en la segunda la respuesta Dictionary <int, string[]> myDict = new Dictionary <int, string[]>(); //Pasa el id del producto al view. ViewData["idProduct"] = id; //Recorre la consulta de las preguntas y las agrega al arreglo y al diccionario, dejando la casilla de respuesta vacia. foreach (var s in sqlQ) { string[] arr = new string[2]; arr[0] = s.Description; arr[1] = " "; myDict.Add(s.Id, arr); } //Recorre la consulta de respuestas y las agrega al arreglo de la pregunta correspondiente, accediendo a esta mediante el ID. foreach (var a in sqlA) { string[] arr = myDict[a.QuestionId]; arr[1] = a.Description; } return(View(myDict)); }