コード例 #1
0
        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"));
            }
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        //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)));
                    }
                }
            }
        }
コード例 #5
0
        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));
        }
コード例 #6
0
        // 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));
        }