示例#1
0
        public ChanguitoCompleta crearChango(ChanguitoCompleta completo, int idCategoria = -1, int idLocal = -1, int ordenar = 2)
        {
            TanoNEEntities ctx    = new TanoNEEntities();
            Tandas         ultima = ctx.Tandas.ToList().LastOrDefault();

            if (ultima != null && ultima.fechaCerrado == null)
            {
                completo.locales = ultima.Circuitos.Locales.Where(a => a.activo).OrderBy(a => a.comuna).ToList();
            }

            completo.categorias = ctx.Categorias.Where(a => a.Productos.Any(b => b.activo)).Select(a => new Cat {
                idCategoria = a.idCategoria, nombre = a.nombre
            }).OrderBy(a => a.nombre).ToList();

            if (User.Identity.IsAuthenticated && ultima != null)
            {
                EstadosCompra EstadoEntregado = ctx.EstadosCompra.FirstOrDefault(a => a.codigo == 1);

                Vecinos actual = ctx.Vecinos.FirstOrDefault(a => a.correo == User.Identity.Name);
                completo.totalCompraTandaUsuario = ctx.Compras.Where(a => a.vecinoId == actual.idVecino && a.tandaId == ultima.idTanda && a.estadoId == EstadoEntregado.idEstadoCompra).Count();
            }

            Categorias cat = ctx.Categorias.FirstOrDefault(a => a.nombre == "Bolsones");

            if (idCategoria != -1)
            {
                cat = ctx.Categorias.FirstOrDefault(a => a.idCategoria == idCategoria);
                if (!cat.Productos.Any(a => a.activo))
                {
                    int cate = completo.categorias.ToArray()[0].idCategoria;
                    cat = ctx.Categorias.FirstOrDefault(a => a.idCategoria == cate);
                }
            }


            ViewBag.categoria = idCategoria == -1 ? idCategoria : cat.idCategoria;
            ViewBag.ordenar   = ordenar;

            if (idLocal == -1)
            {
                completo.changuito = ctx.Productos.Where(a => (idCategoria <0 ? a.categoriaId> idCategoria: a.categoriaId == cat.idCategoria) && a.activo).OrderBy(a => a.producto).ToList().Select(a => new Changuito()
                {
                    idProducto  = a.idProducto,
                    stock       = a.stock,
                    nombre      = a.producto + " - " + a.presentacion + (a.marca != null ? "\n" + a.marca : ""),
                    descripcion = a.descripcion == null ? "" : a.descripcion,//.Replace("\n", "<br/>"),
                    precio      = a.Precios.LastOrDefault().precio,
                    comentarios = a.ComentariosProducto.Where(comentarios => comentarios.visible).Count(),
                    vendidos    = a.CompraProducto.GroupBy(b => b.productoId).Select(c => new { Id = c.Key, Cantidad = c.Count() }).Sum(d => d.Cantidad),
                    rating      = a.ComentariosProducto.Where(comentarios => comentarios.visible).Count() == 0 ? 0 : a.ComentariosProducto.Where(comentarios => comentarios.visible).Average(b => b.estrellas)
                });
            }
            else
            {
                completo.changuito = ctx.Productos.Where(a => (idCategoria <0 ? a.categoriaId> idCategoria: a.categoriaId == cat.idCategoria) && a.ProductosLocales.Any(b => b.localId == idLocal) && a.activo).OrderBy(a => a.producto).ToList().Select(a => new Changuito()
                {
                    idProducto  = a.idProducto,
                    stock       = a.stock,
                    nombre      = a.producto + " - " + a.presentacion + (a.marca != null ? "\n" + a.marca : ""),
                    descripcion = a.descripcion == null ? "" : a.descripcion,//.Replace("\n", "<br/>"),
                    precio      = a.Precios.LastOrDefault().precio,
                    comentarios = a.ComentariosProducto.Where(comentarios => comentarios.visible).Count(),
                    vendidos    = a.CompraProducto.GroupBy(b => b.productoId).Select(c => new { Id = c.Key, Cantidad = c.Count() }).Sum(d => d.Cantidad),
                    rating      = a.ComentariosProducto.Where(comentarios => comentarios.visible).Count() == 0 ? 0 : a.ComentariosProducto.Where(comentarios => comentarios.visible).Average(b => b.estrellas)
                });
            }

            switch (ordenar)
            {
            case 1:
                completo.changuito = completo.changuito.OrderBy(a => a.nombre);
                break;

            case 2:
                completo.changuito = completo.changuito.OrderByDescending(a => a.vendidos).ThenByDescending(a => a.precio);
                break;

            case 3:
                completo.changuito = completo.changuito.OrderByDescending(a => a.rating).ThenByDescending(a => a.precio);
                break;
            }



            return(completo);
        }
示例#2
0
        public JsonResult Lista(int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = "Id ASC", string nombre = null, string marca = null, string descripcion = null, string cantidad = null, decimal precio = -1, decimal costo = -1, int stock = -2, int idCategoria = -1, bool todos = true, int idLocal = -1)
        {
            //string path = HttpContext.Request.Url.AbsolutePath;
            //bool todos = true;
            TanoNEEntities ctx        = new TanoNEEntities();
            var            listaFinal = ctx.Productos.Where(a => todos == true ? (a.activo == true || a.activo == false) : a.activo == !todos) /*.OrderBy(a => a.idProducto).Skip(offset).Take(limit)*/.ToList().Select(a => new
            {
                idProducto  = a.idProducto,
                nombre      = a.producto,
                stock       = a.stock,
                marca       = a.marca,
                descripcion = a.descripcion != null ? a.descripcion.Replace("\n", "<br/>") : "",
                proveedor   = a.proveedor,
                variedad    = a.variedad,
                cantidad    = a.presentacion,
                imagen      = System.IO.File.Exists(HttpContext.Server.MapPath("/Imagenes/Producto-" + a.idProducto + ".jpg")) ? "/Imagenes/Producto-" + a.idProducto + ".jpg" : "/Imagenes/Fijas/pp.jpeg",
                idCategoria = a.categoriaId,
                categoria   = a.Categorias.nombre,
                precio      = a.Precios.LastOrDefault().precio,
                costo       = a.Costos.LastOrDefault().costo,
                borrar      = a.activo,
                selected    = idLocal != -1 ? a.ProductosLocales.Count > 0 : false
            });

            switch (jtSorting)
            {
            default:
                listaFinal = listaFinal.OrderByDescending(a => a.idProducto);
                break;

            case "nombre ASC":
                listaFinal = listaFinal.OrderBy(a => a.nombre);
                break;

            case "nombre DESC":
                listaFinal = listaFinal.OrderByDescending(a => a.nombre);
                break;

            case "marca ASC":
                listaFinal = listaFinal.OrderBy(a => a.marca);
                break;

            case "marca DESC":
                listaFinal = listaFinal.OrderByDescending(a => a.marca);
                break;

            case "descripcion ASC":
                listaFinal = listaFinal.OrderBy(a => a.descripcion);
                break;

            case "descripcion DESC":
                listaFinal = listaFinal.OrderByDescending(a => a.descripcion);
                break;

            case "cantidad ASC":
                listaFinal = listaFinal.OrderBy(a => a.cantidad);
                break;

            case "cantidad DESC":
                listaFinal = listaFinal.OrderByDescending(a => a.cantidad);
                break;

            case "categoria ASC":
                listaFinal = listaFinal.OrderBy(a => a.categoria);
                break;

            case "categoria DESC":
                listaFinal = listaFinal.OrderByDescending(a => a.categoria);
                break;

            case "precio ASC":
                listaFinal = listaFinal.OrderBy(a => a.precio);
                break;

            case "precio DESC":
                listaFinal = listaFinal.OrderByDescending(a => a.precio);
                break;

            case "costo ASC":
                listaFinal = listaFinal.OrderBy(a => a.costo);
                break;

            case "costo DESC":
                listaFinal = listaFinal.OrderByDescending(a => a.costo);
                break;

            case "stock ASC":
                listaFinal = listaFinal.OrderBy(a => a.stock);
                break;

            case "stock DESC":
                listaFinal = listaFinal.OrderByDescending(a => a.stock);
                break;

            case "borrar ASC":
                listaFinal = listaFinal.OrderBy(a => a.borrar);
                break;

            case "borrar DESC":
                listaFinal = listaFinal.OrderByDescending(a => a.borrar);
                break;
            }

            if (!string.IsNullOrWhiteSpace(nombre))
            {
                listaFinal = listaFinal.Where(a => a.nombre.Contains(nombre)).ToList();
            }

            if (!string.IsNullOrWhiteSpace(marca))
            {
                listaFinal = listaFinal.Where(a => a.marca.Contains(marca)).ToList();
            }

            if (!string.IsNullOrWhiteSpace(descripcion))
            {
                listaFinal = listaFinal.Where(a => a.marca.Contains(descripcion)).ToList();
            }

            if (!string.IsNullOrWhiteSpace(cantidad))
            {
                listaFinal = listaFinal.Where(a => a.nombre.Contains(cantidad)).ToList();
            }

            if (idCategoria > 0)
            {
                listaFinal = listaFinal.Where(a => a.idCategoria == idCategoria).ToList();
            }

            if (precio > 0)
            {
                listaFinal = listaFinal.Where(a => a.precio == precio).ToList();
            }

            if (costo > 0)
            {
                listaFinal = listaFinal.Where(a => a.costo == costo).ToList();
            }

            if (stock > -2)
            {
                listaFinal = listaFinal.Where(a => a.stock == stock).ToList();
            }

            int size = listaFinal.Count();

            if (jtPageSize > 0 || jtStartIndex > 0)
            {
                listaFinal = listaFinal.Skip(jtStartIndex).Take(jtPageSize).ToList();
            }

            return(Json(new { Result = "OK", Records = listaFinal, TotalRecordCount = size }));

            //return Json(new { total = lista.Count(), rows = lista }, JsonRequestBehavior.DenyGet);
            //return Json(lista, JsonRequestBehavior.DenyGet);
        }
示例#3
0
        public JsonResult Lista(int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = "Id ASC", string local = null, int comuna = -1, string producto = null, string comentario = null, int estrellas = -1)
        {
            TanoNEEntities ctx        = new TanoNEEntities();
            var            listaFinal = ctx.ComentariosProducto.ToList().Select(a => new
            {
                idProductoComentario = a.idProductoComentario,
                local      = a.Compras.Locales.nombre == null ? a.Compras.Locales.direccion : a.Compras.Locales.nombre,
                comuna     = a.Compras.Locales.comuna,
                vecinx     = a.Compras.Vecinos.nombres + " - " + a.Compras.Vecinos.telefono,
                producto   = a.Productos.producto + " - " + a.Productos.presentacion + (a.Productos.marca != null ? "\n" + a.Productos.marca : ""),
                comentario = a.comentario,
                estrellas  = a.estrellas,
                fecha      = a.fecha,
                visible    = a.visible
            });

            switch (jtSorting)
            {
            default:
                listaFinal = listaFinal.OrderByDescending(a => a.idProductoComentario);
                break;

            case "local ASC":
                listaFinal = listaFinal.OrderBy(a => a.local);
                break;

            case "local DESC":
                listaFinal = listaFinal.OrderByDescending(a => a.local);
                break;

            case "comuna ASC":
                listaFinal = listaFinal.OrderBy(a => a.comuna);
                break;

            case "comuna DESC":
                listaFinal = listaFinal.OrderByDescending(a => a.comuna);
                break;

            case "producto ASC":
                listaFinal = listaFinal.OrderBy(a => a.producto);
                break;

            case "producto DESC":
                listaFinal = listaFinal.OrderByDescending(a => a.producto);
                break;

            case "comentario ASC":
                listaFinal = listaFinal.OrderBy(a => a.comentario);
                break;

            case "comentario DESC":
                listaFinal = listaFinal.OrderByDescending(a => a.comentario);
                break;

            case "estrellas ASC":
                listaFinal = listaFinal.OrderBy(a => a.estrellas);
                break;

            case "estrellas DESC":
                listaFinal = listaFinal.OrderByDescending(a => a.estrellas);
                break;

            case "fecha ASC":
                listaFinal = listaFinal.OrderBy(a => a.fecha);
                break;

            case "fecha DESC":
                listaFinal = listaFinal.OrderByDescending(a => a.fecha);
                break;

            case "visible ASC":
                listaFinal = listaFinal.OrderBy(a => a.visible);
                break;

            case "visible DESC":
                listaFinal = listaFinal.OrderByDescending(a => a.visible);
                break;
            }

            if (!string.IsNullOrWhiteSpace(local))
            {
                listaFinal = listaFinal.Where(a => a.local.Contains(local)).ToList();
            }

            if (comuna > 0)
            {
                listaFinal = listaFinal.Where(a => a.comuna == comuna).ToList();
            }

            if (!string.IsNullOrWhiteSpace(producto))
            {
                listaFinal = listaFinal.Where(a => a.producto.Contains(producto)).ToList();
            }

            if (!string.IsNullOrWhiteSpace(comentario))
            {
                listaFinal = listaFinal.Where(a => a.comentario.Contains(comentario)).ToList();
            }

            if (estrellas > 0)
            {
                listaFinal = listaFinal.Where(a => a.estrellas == estrellas).ToList();
            }



            int size = listaFinal.Count();

            if (jtPageSize > 0 || jtStartIndex > 0)
            {
                listaFinal = listaFinal.Skip(jtStartIndex).Take(jtPageSize).ToList();
            }

            return(Json(new { Result = "OK", Records = listaFinal, TotalRecordCount = size }));
        }
示例#4
0
        public ActionResult Modificar(int codigo, bool abrir, string fechaVenta, int idTanda = -1)
        {
            TanoNEEntities ctx  = new TanoNEEntities();
            ConfCircuitos  conf = new ConfCircuitos();

            Circuitos    circuito    = ctx.Circuitos.FirstOrDefault(a => a.codigo == codigo);
            Vecinos      responsable = ctx.Vecinos.FirstOrDefault(a => a.correo == User.Identity.Name);
            RolesVecinos rol         = responsable.RolesVecinos.FirstOrDefault(a => a.Roles.codigoRol == 2);

            if (rol == null)
            {
                conf.error = "Su ususario no tiene permisos";
            }
            else
            {
                if (abrir)
                {
                    Tandas ultima = ctx.Tandas.ToList().LastOrDefault();
                    if (ultima != null && ultima.fechaCerrado == null)
                    {
                        conf.error = "No puede haber 2 tandas abiertas";
                    }
                    else
                    {
                        Tandas tanda = new Tandas();
                        tanda.fechaAbierto = DateTime.Now;
                        tanda.fechaVenta   = DateTime.ParseExact(fechaVenta, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                        tanda.Circuitos    = circuito;
                        tanda.Vecinos      = responsable;
                        conf.abrir         = false;
                        conf.circuito      = tanda.Circuitos.nombre;
                        conf.codigo        = tanda.Circuitos.codigo;
                        conf.idTanda       = tanda.idTanda;
                        conf.idCircuito    = tanda.Circuitos.idCircuito;
                        conf.leyenda       = "Circuito Abierto: ";

                        if (!bool.Parse(ConfigurationManager.AppSettings["debug"]))
                        {
                            ApiProductosController.mandarNotificacion("Ya poder pedir!", "Desde hoy tenés la posibilidad de hacer tu pedido", "CARRITO", ctx.AlertasVecinxs.Where(a => a.Vecinos.token != null && a.Alertas.codigo == 3).Select(a => a.Vecinos.token).Distinct().ToArray());
                        }

                        ctx.Tandas.Add(tanda);
                        ctx.SaveChanges();
                    }
                }
                else
                {
                    Tandas ultima = ctx.Tandas.ToList().LastOrDefault();
                    if (ultima != null && ultima.fechaCerrado != null)
                    {
                        conf.error = "Ya se encuentra cerrado";
                    }
                    else
                    {
                        if (idTanda == -1)
                        {
                            conf.error = "No se encontró la tanda";
                        }
                        else
                        {
                            Tandas tanda = ctx.Tandas.FirstOrDefault(a => a.idTanda == idTanda);
                            tanda.fechaCerrado = DateTime.Now;
                            tanda.Vecinos      = responsable;

                            conf.leyenda    = "No hay tanda abierta, último abierto:";
                            conf.abrir      = true;
                            conf.idCircuito = ultima.Circuitos.idCircuito;
                            conf.codigo     = ultima.Circuitos.codigo;

                            //CERRAR TODOS LOS PEDIDOS DE ESTA TANDA

                            EstadosCompra confirmado = ctx.EstadosCompra.FirstOrDefault(a => a.codigo == 2);
                            foreach (var compraEnTanda in tanda.Compras)
                            {
                                compraEnTanda.EstadosCompra = confirmado;
                            }
                            ctx.SaveChanges();

                            //if (!bool.Parse(ConfigurationManager.AppSettings["debug"]))
                            //    MandarMailConfirmandoCompraTodos(tanda);

                            ctx.SaveChanges();
                        }
                    }
                }
            }



            return(RedirectToAction("Tandas", "Tandas"));
        }
示例#5
0
        public JsonResult Editar(int idProducto, string nombre, string marca, string descripcion, string proveedor, string variedad, HttpPostedFileBase imagen, string cantidad, int idCategoria, decimal precio, decimal costo, int stock)
        {
            TanoNEEntities ctx = new TanoNEEntities();

            Productos item = ctx.Productos.FirstOrDefault(a => a.idProducto == idProducto);

            if (item != null)
            {
                if (ctx.Productos.FirstOrDefault(a => a.producto == nombre && a.marca == marca && a.presentacion == cantidad && a.idProducto != idProducto) != null)
                {
                    return(Json(new { error = true, mensaje = "Ya existe otro producto de esas caracteristicas" }, JsonRequestBehavior.DenyGet));
                }

                Categorias categoria = ctx.Categorias.FirstOrDefault(a => a.idCategoria == idCategoria);
                item.marca        = marca;
                item.descripcion  = descripcion;
                item.presentacion = cantidad;
                item.stock        = stock;
                item.proveedor    = proveedor;
                item.variedad     = variedad;
                item.Categorias   = categoria;

                Precios pre = new Precios();
                pre.precio = precio;
                pre.fecha  = DateTime.Now;
                item.Precios.Add(pre);

                Costos cos = new Costos();
                cos.costo = costo;
                cos.fecha = DateTime.Now;
                item.Costos.Add(cos);

                ctx.SaveChanges();

                if (imagen != null)
                {
                    string savedFileName = rutaImagen + "Producto-" + item.idProducto + imagen.FileName.Substring(imagen.FileName.LastIndexOf("."));
                    imagen.SaveAs(savedFileName);
                }
            }
            else
            {
                return(Json(new { error = true, mensaje = "No existe el producto" }, JsonRequestBehavior.DenyGet));
            }

            var devuelta = new
            {
                idProducto  = item.idProducto,
                nombre      = item.producto,
                stock       = item.stock,
                marca       = item.marca,
                descripcion = item.descripcion != null?item.descripcion.Replace("\n", "<br/>") : "",
                                  cantidad    = item.presentacion,
                                  imagen      = System.IO.File.Exists(HttpContext.Server.MapPath("/Imagenes/Producto-" + item.idProducto + ".jpg")) ? "/Imagenes/Producto-" + item.idProducto + ".jpg" : "/Imagenes/Fijas/pp.jpeg",
                                  idCategoria = item.categoriaId,
                                  categoria   = item.Categorias.nombre,
                                  precio      = item.Precios.LastOrDefault().precio,
                                  costo       = item.Costos.LastOrDefault().costo,
                                  borrar      = item.activo
            };

            return(Json(new { Result = "OK", Record = devuelta }, JsonRequestBehavior.DenyGet));

            //return Json(new { error = false, mensaje = "Producto editado satisfactoriamente" }, JsonRequestBehavior.DenyGet);
        }
示例#6
0
        public ActionResult CrearExcel(int idTanda, bool porLocal = false)
        {
            /*string handle = Guid.NewGuid().ToString();
             *
             * StringBuilder csv = new StringBuilder();
             * string Columnas = null;
             * if (porLocal)
             *  Columnas = ""; // string.Format("{0};{1};{2};{3}", "N", "Local", "Productos");
             * else
             *  Columnas = string.Format("{0};{1};{2};{3}", "N", "Producto", "Presentacion", "Cantidad", "Costo(Aprox)");
             * csv.AppendLine(Columnas);
             *
             *
             * TanoNEEntities ctx = new TanoNEEntities();
             * Tandas actual = ctx.Tandas.FirstOrDefault(a => a.idTanda == idTanda);
             *
             * if (porLocal)
             * {
             *  decimal costoTotal = 0;
             *  var locales = ctx.Compras.Where(a => a.tandaId == idTanda).Select(a => a.Locales).Distinct().ToList();
             *  foreach (var local in locales)
             *  {
             *      csv.AppendLine(local.direccion);
             *      var listado = ctx.CompraProducto.Where(a => a.Compras.localId == local.idLocal && a.Compras.tandaId == idTanda).GroupBy(a => a.productoId).Select(a => new { idProducto = a.Key, Cantidad = a.Sum(b => b.cantidad) }).ToArray();
             *      for (int x = 0; x < listado.Count(); x++)
             *      {
             *          var compra = listado[x];
             *          Productos prod = ctx.Productos.FirstOrDefault(a => a.idProducto == compra.idProducto);
             *          Costos ultimo = prod.Costos.Count > 1 ? prod.Costos.LastOrDefault(a => a.fecha.Date <= actual.fechaAbierto.Date) : prod.Costos.FirstOrDefault();
             *          decimal costo = ultimo.costo * compra.Cantidad;
             *          costoTotal += costo;
             *          string filas = string.Format(";{0};{1};${2}", compra.Cantidad, string.Format("{0} - {1} - {2}", prod.producto, prod.marca, prod.presentacion), costo.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture));
             *          csv.AppendLine(filas);
             *      }
             *  }
             *  string cierre = string.Format("Total;;;${0}", costoTotal.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture));
             *  csv.AppendLine(cierre);
             * }
             * else
             * {
             *  var listado = ctx.CompraProducto.Where(a => a.Compras.tandaId == idTanda).GroupBy(a => a.productoId).Select(a => new { idProducto = a.Key, Cantidad = a.Sum(b => b.cantidad) }).ToArray();
             *  decimal costoTotal = 0;
             *  for (int x = 0; x < listado.Count(); x++)
             *  {
             *      var compra = listado[x];
             *      Productos prod = ctx.Productos.FirstOrDefault(a => a.idProducto == compra.idProducto);
             *      Costos ultimo = prod.Costos.Count > 1 ? (prod.Costos.LastOrDefault(a => a.fecha.Date <= actual.fechaAbierto.Date) == null ? prod.Costos.LastOrDefault() : prod.Costos.FirstOrDefault()) : prod.Costos.FirstOrDefault();
             *      decimal costo = ultimo.costo * compra.Cantidad;
             *      //decimal costo = prod.Costos.FirstOrDefault(a => a.fecha <= actual.fechaAbierto).costo * compra.Cantidad;
             *      costoTotal += costo;
             *      string filas = string.Format("{0};{1};{2};{3};${4}", x + 1, prod.producto, prod.presentacion, compra.Cantidad, costo.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture));
             *      csv.AppendLine(filas);
             *  }
             *
             *  string cierre = string.Format("{0};{1};{2};{3};${4}", "", "", "", "", costoTotal.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture));
             *  csv.AppendLine(cierre);
             * }
             *
             *
             *
             * using (MemoryStream memoryStream = new MemoryStream(Encoding.Default.GetBytes(csv.ToString())))
             * {
             *  memoryStream.Position = 0;
             *  TempData[handle] = memoryStream.ToArray();
             * }
             *
             * return Json(new { FileGuid = handle, FileName = "Reporte.csv" });*/

            string handle = Guid.NewGuid().ToString();

            TanoNEEntities ctx    = new TanoNEEntities();
            Tandas         actual = ctx.Tandas.FirstOrDefault(a => a.idTanda == idTanda);

            using (MemoryStream mem = new MemoryStream())
                using (SLDocument sl = new SLDocument())
                {
                    sl.RenameWorksheet(SLDocument.DefaultFirstSheetName, porLocal ? "Local" : "Total");

                    SLStyle bordeNegrita = sl.CreateStyle();
                    bordeNegrita.Border.LeftBorder.Color   = System.Drawing.Color.Black;
                    bordeNegrita.Border.TopBorder.Color    = System.Drawing.Color.Black;
                    bordeNegrita.Border.RightBorder.Color  = System.Drawing.Color.Black;
                    bordeNegrita.Border.BottomBorder.Color = System.Drawing.Color.Black;

                    bordeNegrita.Font.Bold = true;

                    bordeNegrita.Border.LeftBorder.BorderStyle   = BorderStyleValues.Thin;
                    bordeNegrita.Border.TopBorder.BorderStyle    = BorderStyleValues.Thin;
                    bordeNegrita.Border.RightBorder.BorderStyle  = BorderStyleValues.Thin;
                    bordeNegrita.Border.BottomBorder.BorderStyle = BorderStyleValues.Thin;

                    SLStyle bordeIz = sl.CreateStyle();
                    bordeIz.Border.LeftBorder.Color       = System.Drawing.Color.Black;
                    bordeIz.Border.LeftBorder.BorderStyle = BorderStyleValues.Thin;

                    SLStyle bordeDe = sl.CreateStyle();
                    bordeDe.Border.RightBorder.Color       = System.Drawing.Color.Black;
                    bordeDe.Border.RightBorder.BorderStyle = BorderStyleValues.Thin;

                    SLStyle bordeAr = sl.CreateStyle();
                    bordeAr.Border.TopBorder.Color       = System.Drawing.Color.Black;
                    bordeAr.Border.TopBorder.BorderStyle = BorderStyleValues.Thin;

                    SLStyle bordeAb = sl.CreateStyle();
                    bordeAb.Border.BottomBorder.Color       = System.Drawing.Color.Black;
                    bordeAb.Border.BottomBorder.BorderStyle = BorderStyleValues.Thin;

                    SLStyle saltoLinea = sl.CreateStyle();
                    saltoLinea.SetVerticalAlignment(VerticalAlignmentValues.Center);
                    saltoLinea.SetWrapText(true);

                    SLStyle rojo = sl.CreateStyle();
                    rojo.Fill.SetPatternType(PatternValues.Solid);//.BottomBorder.Color = System.Drawing.Color.Red;
                    rojo.Font.FontColor = System.Drawing.Color.White;
                    rojo.Fill.SetPatternForegroundColor(System.Drawing.Color.Red);

                    SLStyle centrado = sl.CreateStyle();
                    centrado.FormatCode    = "$ * #,##0.00";
                    centrado.Font.FontSize = 10;
                    centrado.SetHorizontalAlignment(HorizontalAlignmentValues.Right);

                    SLStyle negrita = sl.CreateStyle();
                    negrita.Font.Bold = true;

                    int row = 3;

                    if (porLocal)
                    {
                        sl.SetColumnWidth(1, 16);
                        sl.SetColumnWidth(2, 10);
                        sl.SetColumnWidth(3, 65);
                        sl.SetColumnWidth(4, 15);
                        sl.SetColumnWidth(5, 15);

                        sl.SetCellValue(1, 1, "Local");
                        sl.SetCellValue(1, 2, "Cantidad");
                        sl.SetCellValue(1, 3, "Producto");
                        sl.SetCellValue(1, 4, "Costo");
                        sl.SetCellValue(1, 5, "Costo Total");

                        sl.SetCellStyle(1, 1, 1, 5, bordeNegrita);

                        decimal total   = 0;
                        var     locales = ctx.Compras.Where(a => a.tandaId == idTanda).Select(a => a.Locales).Distinct().OrderBy(a => new { a.comuna, a.nombre }).ToList();
                        foreach (var local in locales)
                        {
                            var listado     = ctx.CompraProducto.Where(a => a.Compras.localId == local.idLocal && a.Compras.tandaId == idTanda).OrderBy(a => a.Productos.producto).GroupBy(a => a.productoId).Select(a => new { idProducto = a.Key, cp = a.FirstOrDefault(), Cantidad = a.Sum(b => b.cantidad) });
                            int totalVecinx = (row + listado.Count() - 1);

                            sl.SetCellStyle(row, 1, totalVecinx, 1, bordeIz);
                            sl.SetCellStyle(row, 1, row, 5, bordeAr);
                            sl.SetCellStyle(totalVecinx, 1, totalVecinx, 5, bordeAb);
                            for (int x = 1; x < 6; x++)
                            {
                                sl.SetCellStyle(row, x, totalVecinx, x, bordeDe);
                            }

                            sl.SetCellValue(row, 1, local.direccion + (local.nombre != null ? "\n" + local.nombre : ""));
                            sl.SetCellStyle(row, 1, saltoLinea);
                            sl.MergeWorksheetCells(row, 1, totalVecinx, 1);

                            decimal subTotalLocal = 0;
                            foreach (var productos in listado)
                            {
                                Productos prod = ctx.Productos.FirstOrDefault(a => a.idProducto == productos.idProducto);

                                Costos  ultimo     = productos.cp.Costos;
                                decimal costoTotal = ultimo.costo * productos.Cantidad;
                                subTotalLocal += costoTotal;

                                sl.SetCellValue(row, 2, productos.Cantidad);
                                sl.SetCellValue(row, 3, prod.producto + " - " + prod.marca + " - " + prod.presentacion);

                                sl.SetCellValue(row, 4, ultimo.costo);
                                sl.SetCellValue(row, 5, costoTotal);

                                sl.SetCellStyle(row, 4, centrado);
                                sl.SetCellStyle(row, 5, centrado);

                                row++;
                            }

                            total += subTotalLocal;

                            sl.SetCellValue(row, 4, "Subtotal local: ");
                            sl.SetCellStyle(row, 4, negrita);
                            sl.SetCellValue(row, 5, subTotalLocal);
                            sl.SetCellStyle(row, 5, centrado);
                            sl.SetCellStyle(row, 5, negrita);

                            row++;
                            row++;
                        }

                        row++;
                        sl.SetCellValue(row, 4, "Total: ");
                        sl.SetCellStyle(row, 4, negrita);
                        sl.SetCellValue(row, 5, total);
                        sl.SetCellStyle(row, 5, centrado);
                        sl.SetCellStyle(row, 5, negrita);
                    }
                    else
                    {
                        sl.SetColumnWidth(1, 5);
                        sl.SetColumnWidth(2, 10);
                        sl.SetColumnWidth(3, 65);
                        sl.SetColumnWidth(4, 20);
                        sl.SetColumnWidth(5, 20);
                        sl.SetColumnWidth(6, 15);
                        sl.SetColumnWidth(7, 15);

                        sl.SetCellValue(1, 1, "N°");
                        sl.SetCellValue(1, 2, "Cantidad");
                        sl.SetCellValue(1, 3, "Producto");
                        sl.SetCellValue(1, 4, "Marca");
                        sl.SetCellValue(1, 5, "Presentacion");
                        sl.SetCellValue(1, 6, "Costo");
                        sl.SetCellValue(1, 7, "Costo Total");

                        sl.SetCellStyle(1, 1, 1, 7, bordeNegrita);

                        var listado = ctx.CompraProducto.Where(a => a.Compras.tandaId == idTanda).GroupBy(a => a.productoId).Select(a => new { idProducto = a.Key, Cantidad = a.Sum(b => b.cantidad), Compra = a.FirstOrDefault() }).OrderBy(a => new { a.Compra.Productos.Categorias.nombre, a.Compra.Productos.producto }).ToList();

                        decimal subTotal = 0;
                        for (int x = 0; x < listado.Count(); x++)
                        {
                            var compra = listado.ElementAt(x);

                            Costos  ultimo     = compra.Compra.Costos; //.Costos.Count > 1 ? (compra.Compra.Productos.Costos.LastOrDefault(a => a.fecha.Date <= actual.fechaAbierto.Date) == null ? compra.Compra.Productos.Costos.LastOrDefault() : compra.Compra.Productos.Costos.FirstOrDefault()) : compra.Compra.Productos.Costos.FirstOrDefault();
                            decimal costoTotal = ultimo.costo * compra.Cantidad;
                            subTotal += costoTotal;

                            sl.SetCellValue(row, 1, x + 1);
                            sl.SetCellValue(row, 2, compra.Cantidad);
                            sl.SetCellValue(row, 3, compra.Compra.Productos.producto + " - " + compra.Compra.Productos.marca + " - " + compra.Compra.Productos.presentacion);
                            sl.SetCellValue(row, 4, compra.Compra.Productos.marca);
                            sl.SetCellValue(row, 5, compra.Compra.Productos.presentacion);
                            sl.SetCellValue(row, 6, ultimo.costo);
                            sl.SetCellValue(row, 7, costoTotal);

                            sl.SetCellStyle(row, 6, centrado);
                            sl.SetCellStyle(row, 7, centrado);

                            row++;
                        }

                        centrado.Font.Bold = true;
                        sl.SetCellValue(row, 5, "Total: ");
                        sl.SetCellValue(row, 7, subTotal);
                        sl.SetCellStyle(row, 7, centrado);
                    }

                    sl.SaveAs(mem);
                    mem.Position = 0;


                    TempData[handle] = mem.ToArray();

                    return(Json(new { FileGuid = handle, FileName = porLocal ? "Local.xlsx" : "Total.xlsx" }));
                }
        }
示例#7
0
        public ActionResult CrearExcelFinanzas(int idTanda)
        {
            /*string handle = Guid.NewGuid().ToString();
             *
             * StringBuilder csv = new StringBuilder();
             * string Columnas = string.Format(";{0};{1};{2};{3};{4}", "Cantidad", "Producto", "Costo", "Precio", "Diferencia");
             * csv.AppendLine(Columnas);
             *
             *
             * TanoNEEntities ctx = new TanoNEEntities();
             * Tandas actual = ctx.Tandas.FirstOrDefault(a => a.idTanda == idTanda);
             *
             *
             * var locales = ctx.Compras.Where(a => a.tandaId == idTanda).Select(a => a.Locales).Distinct().ToList();
             * foreach (var local in locales)
             * {
             *  csv.AppendLine(local.direccion);
             *  decimal costoLocal = 0;
             *  decimal precioLocal = 0;
             *  var listado = ctx.CompraProducto.Where(a => a.Compras.localId == local.idLocal && a.Compras.tandaId == idTanda).GroupBy(a => a.productoId).Select(a => new { idProducto = a.Key, Cantidad = a.Sum(b => b.cantidad) }).ToArray();
             *  for (int x = 0; x < listado.Count(); x++)
             *  {
             *      var compra = listado[x];
             *      Productos prod = ctx.Productos.FirstOrDefault(a => a.idProducto == compra.idProducto);
             *
             *      Costos ultimoc = prod.Costos.Count > 1 ? prod.Costos.LastOrDefault(a => a.fecha.Date <= actual.fechaAbierto.Date) : prod.Costos.FirstOrDefault();
             *      decimal costo = ultimoc.costo * compra.Cantidad;
             *      //decimal costo = prod.Costos.FirstOrDefault(a => a.fecha <= actual.fechaAbierto).costo * compra.Cantidad;
             *
             *      Precios ultimop = prod.Precios.Count > 1 ? prod.Precios.LastOrDefault(a => a.fecha.Date <= actual.fechaAbierto.Date) : prod.Precios.FirstOrDefault();
             *      decimal precio = ultimop.precio * compra.Cantidad;
             *      //decimal precio = prod.Precios.FirstOrDefault(a => a.fecha <= actual.fechaAbierto).precio * compra.Cantidad;
             *      costoLocal += costo;
             *      precioLocal += precio;
             *      string filas = string.Format(";{0};{1};${2};${3};${4}", compra.Cantidad, string.Format("{0} - {1} - {2}", prod.producto, prod.marca, prod.presentacion), costo.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture), precio.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture), (precio - costo).ToString("0.00", System.Globalization.CultureInfo.InvariantCulture));
             *      csv.AppendLine(filas);
             *  }
             *  csv.AppendLine(string.Format(";;;${0};${1};${2}", costoLocal.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture), precioLocal.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture), (precioLocal - costoLocal).ToString("0.00", System.Globalization.CultureInfo.InvariantCulture)));
             * }
             * //string cierre = string.Format("Total;;;${0}", costoTotal.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture));
             * //csv.AppendLine(cierre);
             *
             * using (MemoryStream memoryStream = new MemoryStream(Encoding.Default.GetBytes(csv.ToString())))
             * {
             *  memoryStream.Position = 0;
             *  TempData[handle] = memoryStream.ToArray();
             * }
             *
             * return Json(new { FileGuid = handle, FileName = "Reporte.csv" });*/


            string handle = Guid.NewGuid().ToString();

            TanoNEEntities ctx    = new TanoNEEntities();
            Tandas         actual = ctx.Tandas.FirstOrDefault(a => a.idTanda == idTanda);

            EstadosCompra entre = ctx.EstadosCompra.FirstOrDefault(a => a.codigo == 3);

            using (MemoryStream mem = new MemoryStream())
                using (SLDocument sl = new SLDocument())
                {
                    sl.RenameWorksheet(SLDocument.DefaultFirstSheetName, "Finanzas");

                    SLStyle bordeNegrita = sl.CreateStyle();
                    bordeNegrita.Border.LeftBorder.Color   = System.Drawing.Color.Black;
                    bordeNegrita.Border.TopBorder.Color    = System.Drawing.Color.Black;
                    bordeNegrita.Border.RightBorder.Color  = System.Drawing.Color.Black;
                    bordeNegrita.Border.BottomBorder.Color = System.Drawing.Color.Black;

                    bordeNegrita.Font.Bold = true;

                    bordeNegrita.Border.LeftBorder.BorderStyle   = BorderStyleValues.Thin;
                    bordeNegrita.Border.TopBorder.BorderStyle    = BorderStyleValues.Thin;
                    bordeNegrita.Border.RightBorder.BorderStyle  = BorderStyleValues.Thin;
                    bordeNegrita.Border.BottomBorder.BorderStyle = BorderStyleValues.Thin;

                    SLStyle bordeIz = sl.CreateStyle();
                    bordeIz.Border.LeftBorder.Color       = System.Drawing.Color.Black;
                    bordeIz.Border.LeftBorder.BorderStyle = BorderStyleValues.Thin;

                    SLStyle bordeDe = sl.CreateStyle();
                    bordeDe.Border.RightBorder.Color       = System.Drawing.Color.Black;
                    bordeDe.Border.RightBorder.BorderStyle = BorderStyleValues.Thin;

                    SLStyle bordeAr = sl.CreateStyle();
                    bordeAr.Border.TopBorder.Color       = System.Drawing.Color.Black;
                    bordeAr.Border.TopBorder.BorderStyle = BorderStyleValues.Thin;

                    SLStyle bordeAb = sl.CreateStyle();
                    bordeAb.Border.BottomBorder.Color       = System.Drawing.Color.Black;
                    bordeAb.Border.BottomBorder.BorderStyle = BorderStyleValues.Thin;

                    SLStyle saltoLinea = sl.CreateStyle();
                    saltoLinea.SetVerticalAlignment(VerticalAlignmentValues.Center);
                    saltoLinea.SetWrapText(true);

                    SLStyle rojo = sl.CreateStyle();
                    rojo.Fill.SetPatternType(PatternValues.Solid);//.BottomBorder.Color = System.Drawing.Color.Red;
                    rojo.Font.FontColor = System.Drawing.Color.White;
                    rojo.Fill.SetPatternForegroundColor(System.Drawing.Color.Red);

                    SLStyle centrado = sl.CreateStyle();
                    centrado.FormatCode    = "$ * #,##0.00";
                    centrado.Font.FontSize = 10;
                    centrado.SetHorizontalAlignment(HorizontalAlignmentValues.Right);

                    SLStyle negrita = sl.CreateStyle();
                    negrita.Font.Bold = true;

                    int row = 3;

                    sl.SetColumnWidth(1, 16);
                    sl.SetColumnWidth(2, 10);
                    sl.SetColumnWidth(3, 65);
                    sl.SetColumnWidth(4, 15);
                    sl.SetColumnWidth(5, 15);
                    sl.SetColumnWidth(6, 15);

                    sl.SetCellValue(1, 1, "Local");
                    sl.SetCellValue(1, 2, "Cantidad");
                    sl.SetCellValue(1, 3, "Producto");
                    sl.SetCellValue(1, 4, "Costo");
                    sl.SetCellValue(1, 5, "Precio");
                    sl.SetCellValue(1, 6, "Diferencia");

                    sl.SetCellStyle(1, 1, 1, 5, bordeNegrita);

                    var locales = ctx.Compras.Where(a => a.tandaId == idTanda && a.estadoId != entre.idEstadoCompra).Select(a => a.Locales).Distinct().OrderBy(a => new { a.comuna, a.nombre }).ToList();
                    foreach (var local in locales)
                    {
                        var listado = ctx.CompraProducto.Where(a => a.Compras.localId == local.idLocal && a.Compras.tandaId == idTanda).GroupBy(a => a.productoId).Select(a => new { idProducto = a.Key, Cantidad = a.Sum(b => b.cantidad), CompraProducto = a.FirstOrDefault() }).ToArray();

                        int totalVecinx = (row + listado.Count() - 1);

                        sl.SetCellStyle(row, 1, totalVecinx, 1, bordeIz);
                        sl.SetCellStyle(row, 1, row, 6, bordeAr);
                        sl.SetCellStyle(totalVecinx, 1, totalVecinx, 6, bordeAb);
                        for (int x = 1; x < 7; x++)
                        {
                            sl.SetCellStyle(row, x, totalVecinx, x, bordeDe);
                        }

                        sl.SetCellValue(row, 1, local.direccion + (local.nombre != null ? "\n" + local.nombre : ""));
                        sl.SetCellStyle(row, 1, saltoLinea);
                        sl.MergeWorksheetCells(row, 1, totalVecinx, 1);

                        decimal costoLocal  = 0;
                        decimal precioLocal = 0;
                        for (int x = 0; x < listado.Count(); x++)
                        {
                            var       compra = listado[x];
                            Productos prod   = ctx.Productos.FirstOrDefault(a => a.idProducto == compra.idProducto);

                            Costos  ultimoc = compra.CompraProducto.Costos;
                            decimal costo   = ultimoc.costo * compra.Cantidad;
                            //decimal costo = prod.Costos.FirstOrDefault(a => a.fecha <= actual.fechaAbierto).costo * compra.Cantidad;

                            //Precios ultimop = prod.Precios.Count > 1 ? prod.Precios.LastOrDefault(a => a.fecha.Date <= actual.fechaAbierto.Date) : prod.Precios.FirstOrDefault();
                            decimal precio = compra.CompraProducto.Precios.precio * compra.Cantidad;
                            //decimal precio = prod.Precios.FirstOrDefault(a => a.fecha <= actual.fechaAbierto).precio * compra.Cantidad;
                            costoLocal  += costo;
                            precioLocal += precio;

                            //string filas = string.Format(";{0};{1};${2};${3};${4}", compra.Cantidad, string.Format("{0} - {1} - {2}", prod.producto, prod.marca, prod.presentacion), costo.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture), precio.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture), (precio - costo).ToString("0.00", System.Globalization.CultureInfo.InvariantCulture));


                            sl.SetCellValue(row, 2, compra.Cantidad);
                            sl.SetCellValue(row, 3, prod.producto + " - " + prod.marca + " - " + prod.presentacion);
                            sl.SetCellValue(row, 4, costo);
                            sl.SetCellValue(row, 5, precio);
                            sl.SetCellValue(row, 6, precio - costo);

                            sl.SetCellStyle(row, 4, centrado);
                            sl.SetCellStyle(row, 5, centrado);
                            sl.SetCellStyle(row, 6, centrado);


                            row++;
                        }

                        sl.SetCellValue(row, 3, "Totales por local: ");
                        sl.SetCellValue(row, 4, costoLocal);
                        sl.SetCellValue(row, 5, precioLocal);
                        sl.SetCellValue(row, 6, precioLocal - costoLocal);

                        sl.SetCellStyle(row, 3, negrita);
                        sl.SetCellStyle(row, 4, negrita);
                        sl.SetCellStyle(row, 5, negrita);
                        sl.SetCellStyle(row, 6, negrita);

                        sl.SetCellStyle(row, 4, centrado);
                        sl.SetCellStyle(row, 5, centrado);
                        sl.SetCellStyle(row, 6, centrado);


                        row++;
                        row++;
                    }


                    sl.SaveAs(mem);
                    mem.Position = 0;


                    TempData[handle] = mem.ToArray();

                    return(Json(new { FileGuid = handle, FileName = "Finanzas.xlsx" }));
                }
        }
示例#8
0
        private void MandarMailConfirmandoCompraTodos(Tandas tandaActual)
        {
            DateTime ProximaEntrea = ApiProductosController.GetNextWeekday();


            TanoNEEntities ctx                 = new TanoNEEntities();
            EstadosCompra  confirmado          = ctx.EstadosCompra.FirstOrDefault(a => a.codigo == 2);
            var            vecinosQueCompraron = tandaActual.Compras.Where(a => a.EstadosCompra.idEstadoCompra == confirmado.idEstadoCompra).GroupBy(a => a.vecinoId).Select(a => a.FirstOrDefault(b => b.vecinoId == a.Key));

            //ctx.AlertasVecinxs.Where(a => a.Vecinos.token != null && a.Alertas.codigo == 3).Select(a => a.vecinxId.ToString()).Distinct().ToArray()
            //    vecinosQueCompraron.Where(a => a.Vecinos.token != null).Select(a => a.Vecinos.token)
            ApiProductosController.mandarNotificacion("Pedido Confirmado", "Gracias por colaborar con la economía social y solidaria. No te olvides de venir con cambio!", "MISCOMPRAS", vecinosQueCompraron.Where(a => a.Vecinos.token != null).Select(a => a.Vecinos.token).ToArray());
            foreach (var actualTanda in vecinosQueCompraron)
            {
                string fecha  = ProximaEntrea.ToString("dd/MM/yyyy") + " - " + actualTanda.Locales.horario;
                string nombre = actualTanda.Vecinos.nombres;
                string correo = actualTanda.Vecinos.correo;

                using (MailMessage mail = new MailMessage())
                {
                    mail.From = new MailAddress("*****@*****.**", "Economía Social y Solidaria");
                    mail.To.Add(correo);
                    //mail.To.Add("*****@*****.**");
                    mail.Subject      = "Economia Social y Solidaria -- Nuevo Encuentro";
                    mail.Body         = "<p>Se han confirmado las siguientes compras</p>";
                    mail.BodyEncoding = System.Text.Encoding.UTF8;

                    List <Compras> totalCompras = ctx.Compras.Where(a => a.tandaId == actualTanda.tandaId && a.vecinoId == actualTanda.Vecinos.idVecino && a.EstadosCompra.idEstadoCompra == confirmado.idEstadoCompra).ToList();
                    foreach (var compras in totalCompras)
                    {
                        mail.Body += "<p>-------------------</p>";
                        mail.Body += "<p>Compra N° " + (totalCompras.IndexOf(compras) + 1) + "</p>";
                        mail.Body += "<p><b>Lo tenés que pasar a retirar el dia " + fecha + " Por nuestro local en " + actualTanda.Locales.direccion + "</b></p>";

                        decimal total = 0;
                        foreach (CompraProducto prod in compras.CompraProducto)
                        {
                            mail.Body += "<p>" + prod.cantidad + " - " + prod.Productos.producto + " - " + prod.Productos.presentacion + " - " + prod.Productos.marca + " - " + (prod.Precios.precio * prod.cantidad) + "</p>";
                            total     += prod.cantidad * prod.Precios.precio;
                        }
                        mail.Body += "<p>-------------------</p>";
                        mail.Body += "<p>Total : " + total + "</p>";
                        mail.Body += "<br/><br/>";
                    }

                    mail.Body += "<p>o	Sujeto a disponibilidad de stock</p>";
                    mail.Body += "<p>o	No te olvides de venir con cambio. Y con bolsa, changuito o lo que te parezca donde poder llevarte tu compra</p>";
                    mail.Body += "<p>o	Pasada el horario de entrega no se aceptan reclamos. Cualcuier problema avisanos con tiempo</p>";
                    mail.Body += "<p>o	Tené en cuenta que cada producto que se pide por este medio lo abonamos al productor (con el dinero de los militantes) y no tenemos devolución posible. No nos claves, gracias.</p>";

                    mail.Body      += "<p>Muchas gracias! Te esperamos</p>";
                    mail.IsBodyHtml = true;

                    using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587))
                    {
                        smtp.Credentials = new NetworkCredential("*****@*****.**", "Frent3355");
                        smtp.EnableSsl   = true;
                        smtp.Send(mail);
                    }
                }
            }
        }
示例#9
0
        public JsonResult ListaCompras(bool ad, string jtSorting)
        {
            TanoNEEntities ctx = new TanoNEEntities();

            Vecinos vecino = ctx.Vecinos.FirstOrDefault(a => a.correo == User.Identity.Name);

            ad = vecino.RolesVecinos.Any(a => a.Roles.codigoRol == 2) && ad;

            Tandas ultimaAbierta = ctx.Tandas.FirstOrDefault(a => a.fechaCerrado == null);

            if (ultimaAbierta == null)
            {
                ultimaAbierta = ctx.Tandas.ToList().Last();
            }

            var lista = ctx.Compras.Where(a => (a.tandaId == ultimaAbierta.idTanda) && (ad ? a.localId > 0 : (vecino.localId == null ? vecino.comuna == a.Locales.comuna : vecino.localId == a.localId))).ToList().Select(a => new
            {
                idCompra  = a.idCompra,
                vecine    = a.Vecinos.nombres,
                productos = string.Join("<br/>", a.CompraProducto.Select(ab => string.Format("{0}: {1} {2} - {3}", ab.cantidad, ab.Productos.producto, ab.Productos.marca, ab.Productos.presentacion))),
                local     = a.Locales.direccion,
                fecha     = a.fecha.ToString("dd/MM/yyyy")
            });

            switch (jtSorting)
            {
            case "idCompra ASC":
                lista = lista.OrderBy(a => a.idCompra);
                break;

            case "idCompra DESC":
                lista = lista.OrderByDescending(a => a.idCompra);
                break;

            case "vecine ASC":
                lista = lista.OrderBy(a => a.vecine);
                break;

            case "vecine DESC":
                lista = lista.OrderByDescending(a => a.vecine);
                break;

            case "productos ASC":
                lista = lista.OrderBy(a => a.productos);
                break;

            case "productos DESC":
                lista = lista.OrderByDescending(a => a.productos);
                break;

            case "local ASC":
                lista = lista.OrderBy(a => a.local);
                break;

            case "local DESC":
                lista = lista.OrderByDescending(a => a.local);
                break;

            case "fecha ASC":
                lista = lista.OrderBy(a => a.fecha);
                break;

            case "fecha DESC":
                lista = lista.OrderByDescending(a => a.fecha);
                break;
            }

            return(Json(new { Result = "OK", Records = lista }, JsonRequestBehavior.DenyGet));
        }
        public IHttpActionResult Registrarse()
        {
            string urla = ConfigurationManager.AppSettings["UrlSitio"];

            TanoNEEntities ctx = new TanoNEEntities();

            var form = HttpContext.Current.Request.Form;


            string email    = form["mail"];
            string nombres  = form["nombres"];
            string telefono = form["telefono"];
            string password = form["password"];
            int    comuna   = int.Parse(form["comuna"]);
            string token    = form["token"];

            Vecinos vecino = ctx.Vecinos.FirstOrDefault(a => a.correo == email);

            if (vecino == null)
            {
                vecino             = new Vecinos();
                vecino.correo      = email;
                vecino.nombres     = nombres;
                vecino.telefono    = telefono;
                vecino.contrasena  = InicioController.GetCrypt(password);
                vecino.comuna      = comuna;
                vecino.fechaCreado = DateTime.Now;
                vecino.token       = token;

                List <string> hashes = ctx.Vecinos.Select(a => a.hash).ToList();
                string        hash   = InicioController.RandomString(25);
                while (hashes.Contains(hash))
                {
                    hash = InicioController.RandomString(25);
                }

                vecino.hash = hash;
                ctx.Vecinos.Add(vecino);


                using (MailMessage mail = new MailMessage())
                {
                    //string datos = "Datos para entrar:<br/>Usuario: " + email;
                    string datos = "Datos para entrar:<br/>Usuario: " + email + " Contraseña :" + password;
                    mail.From = new MailAddress("*****@*****.**", "Economía Social y Solidaria");
                    mail.To.Add(email);
                    mail.Subject    = "Economia Social y Solidaria -- Nuevo Encuentro";
                    mail.Body       = "<p>Gracias por usar nuestro sistema. Hacé click en el link de abajo para activar la cuenta</p>";
                    mail.Body      += "<p><a href='" + urla + "Inicio/ActivarCuenta?k=" + hash + "'>Activar Cuenta</a></p>";
                    mail.Body      += "<p>-------------------</p><p><p>" + datos + "</p><p>-------------------</p>";
                    mail.IsBodyHtml = true;

                    using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587))
                    //using (SmtpClient smtp = new SmtpClient("smtp.encuentrocapital.com.ar", 587))
                    {
                        // smtp.Credentials = new NetworkCredential("*****@*****.**", "kapanga34224389,");
                        smtp.Credentials = new NetworkCredential("*****@*****.**", "Frent3355");
                        smtp.EnableSsl   = true;
                        smtp.Send(mail);
                    }
                }

                ctx.SaveChanges();

                return(Json(new { respuesta = "Te enviamos un mail para activar la cuenta" }));
            }
            else
            {
                return(Json(new { error = "Ya existe el usuario" }));
            }
        }
        public IHttpActionResult Pedir()
        {
            try
            {
                string error = "";

                var form = HttpContext.Current.Request.Form;

                int    idVecino = int.Parse(form["idVecino"]);
                int    local    = int.Parse(form["local"]);
                string prods    = form["productos"];
                int    idCompra = int.Parse(form["idCompra"]);

                dynamic dyn = JArray.Parse(prods);

                int hash = (idVecino + "-" + local + "-" + prods).GetHashCode();

                TanoNEEntities ctx = new TanoNEEntities();

                Locales localCompro = ctx.Locales.FirstOrDefault(a => a.idLocal == local);
                Vecinos vecino      = ctx.Vecinos.FirstOrDefault(a => a.idVecino == idVecino);
                if (vecino == null)
                {
                    error = "Hay que iniciar sesion para realizar un pedido";
                }

                Tandas ultimaTanda = ctx.Tandas.ToList().LastOrDefault(a => a.fechaCerrado == null);
                if (ultimaTanda == null)
                {
                    error = "No hay circuitos abiertos en este momento";
                }

                //Encargado
                EstadosCompra estado = ctx.EstadosCompra.FirstOrDefault(a => a.codigo == 1);

                bool    editando = false;
                Compras compra   = new Compras();
                if (idCompra != -1)
                {
                    compra = ctx.Compras.FirstOrDefault(a => a.idCompra == idCompra);
                    compra.CompraProducto.ToList().ForEach(cs => ctx.CompraProducto.Remove(cs));
                    editando = true;
                }
                else
                {
                    compra.fecha = DateTime.Now;
                }

                compra.Locales       = localCompro;
                compra.Vecinos       = vecino;
                compra.Tandas        = ultimaTanda;
                compra.EstadosCompra = estado;

                if (idCompra == -1)
                {
                    ctx.Compras.Add(compra);
                }

                foreach (dynamic producto in dyn)
                {
                    int prodActual = producto.idProducto;
                    int cantActual = producto.pedidos;

                    Productos prod = ctx.Productos.FirstOrDefault(a => a.idProducto == prodActual);
                    if (prod.stock != -1)
                    {
                        int stockrestante = prod.stock - cantActual;
                        if (stockrestante < 0)
                        {
                            error = string.Format("{0} del siguiente producto:<br/>{1} - {2} - {3}", prod.stock == 0 ? "No contamos con stock" : "Solo contamos con " + prod.stock + " articulos", prod.producto, prod.presentacion, prod.marca);
                            break;
                        }
                        else
                        {
                            prod.stock = stockrestante;
                        }
                    }


                    CompraProducto productos = new CompraProducto();
                    productos.Productos = prod;
                    productos.Compras   = compra;
                    productos.cantidad  = cantActual;

                    ctx.CompraProducto.Add(productos);
                }

                var test = ctx.Compras.FirstOrDefault(a => a.hash == hash);
                if (test != null && !editando)
                {
                    error = "Ya ha comprado los mismos productos para esta tanda";
                }

                if (string.IsNullOrEmpty(error))
                {
                    compra.hash = hash;
                    ctx.SaveChanges();
                }

                return(Json(new { error = error }));
            }
            catch (Exception)
            {
                return(Json(new { error = "Error al grabar, si te sigue pasando, ¡avisanos!" }));
            }
        }
        public IHttpActionResult Usuario() // string correo, string pass)
        {
            TanoNEEntities ctx = new TanoNEEntities();

            var form = HttpContext.Current.Request.Form;

            string correo = form["correo"];
            string pass   = form["pass"];
            string token  = form["token"];

            Vecinos vecino = ctx.Vecinos.FirstOrDefault(a => a.correo == correo);

            if (vecino != null)
            {
                if (!vecino.verificado)
                {
                    return(Json(new { Error = "Hay que verificar la cuenta. Revisá tu mail" }));
                }

                pass = InicioController.GetCrypt(pass);
                if (vecino.contrasena == pass)
                {
                    if (vecino.token == null)
                    {
                        foreach (Alertas alerta in ctx.Alertas.Where(a => a.android))
                        {
                            vecino.AlertasVecinxs.Add(new AlertasVecinxs {
                                Alertas = alerta
                            });
                        }
                    }
                    vecino.token = token;
                    ctx.SaveChanges();

                    EstadosCompra EstadoEntregado = ctx.EstadosCompra.FirstOrDefault(a => a.codigo == 1);
                    EstadosCompra confirmado      = ctx.EstadosCompra.FirstOrDefault(a => a.codigo == 3);
                    EstadosCompra comentado       = ctx.EstadosCompra.FirstOrDefault(a => a.codigo == 4);

                    //Precios ultimop = prod.Precios.Count > 1 ? prod.Precios.LastOrDefault(a => a.fecha.Date <= actual.fechaAbierto.Date) : prod.Precios.FirstOrDefault();


                    var json = ctx.Compras.Where(a => a.vecinoId == vecino.idVecino).OrderByDescending(a => a.fecha).ToList().Select(a => new
                    {
                        idCompra  = a.idCompra,
                        estado    = a.EstadosCompra.nombre,
                        fecha     = a.fecha.ToString("hh:mm dd/MM/yyyy"),
                        idLocal   = a.Locales.idLocal,
                        local     = a.Locales.direccion,
                        barrio    = a.Locales.barrio,
                        editar    = a.estadoId == EstadoEntregado.idEstadoCompra,
                        comentar  = a.estadoId == confirmado.idEstadoCompra,
                        comentado = a.estadoId == comentado.idEstadoCompra,
                        comuna    = a.Locales.comuna,
                        productos = a.CompraProducto.ToList().Select(b => new
                        {
                            idProducto   = b.Productos.idProducto,
                            nombre       = b.Productos.producto,
                            marca        = b.Productos.marca,
                            presentacion = b.Productos.presentacion,
                            cantidad     = b.cantidad,
                            comentado    = a.ComentariosProducto.FirstOrDefault(c => c.productoId == b.productoId) != null, // a.Comentarios.Count == 1 ? a.Comentarios.FirstOrDefault().ComentariosProducto.FirstOrDefault(cp => cp.productoId == b.productoId).Productos != null : false,
                            precioUnidad = b.Precios.precio                                                                 //.Precios.Count > 1 ? b.Productos.Precios.LastOrDefault(precio => a.fecha.Date >= precio.fecha.Date).precio : b.Productos.Precios.FirstOrDefault().precio,
                        })
                    }).ToList();

                    var jsonvecino = new
                    {
                        idVecino = vecino.idVecino,
                        nombre   = vecino.nombres,
                        telefono = vecino.telefono,
                        comuna   = vecino.comuna
                    };

                    return(Json(new { Historico = json, Vecino = jsonvecino }));
                }
                else
                {
                    return(Json(new { Error = "Contraseña incorrecta" }));
                }
            }
            else
            {
                return(Json(new { Error = "No existe el usuario, para usar la plataforma es necesario registrarse " }));
            }
        }
示例#13
0
        public JsonResult ModificarPerfil(string emailperfil, string nombreperfil, string telefonoperfil, int comunaperfil, int[] idsalertas, bool[] valalertas)
        {
            TanoNEEntities ctx    = new TanoNEEntities();
            var            perfil = ctx.Vecinos.FirstOrDefault(a => a.correo == User.Identity.Name);

            if (perfil != null)
            {
                if (ctx.Vecinos.FirstOrDefault(a => a.correo == emailperfil && a.idVecino != perfil.idVecino) != null)
                {
                    return(Json(new { Error = "El correo ingresado ya existe", JsonRequestBehavior.DenyGet }));
                }

                perfil.nombres  = nombreperfil;
                perfil.telefono = telefonoperfil;
                perfil.comuna   = comunaperfil;

                for (int x = 0; x < idsalertas.Length; x++)
                {
                    int idAlerta = idsalertas[x];
                    if (valalertas[x])
                    {
                        perfil.AlertasVecinxs.Add(new AlertasVecinxs {
                            alertaId = idAlerta
                        });
                    }
                    else
                    {
                        var alerta = ctx.AlertasVecinxs.FirstOrDefault(a => a.alertaId == idAlerta && a.vecinxId == perfil.idVecino);
                        if (alerta != null)
                        {
                            ctx.AlertasVecinxs.Remove(alerta);
                        }
                    }
                }

                if (emailperfil != perfil.correo)
                {
                    perfil.correo     = emailperfil;
                    perfil.verificado = false;

                    using (MailMessage mail = new MailMessage())
                    {
                        string urla = ConfigurationManager.AppSettings["UrlSitio"];

                        //string datos = "Datos para entrar:<br/>Usuario: " + email;
                        // string datos = "Datos para entrar:<br/>Usuario: " + email + " Contraseña :" + password;
                        mail.From = new MailAddress("*****@*****.**", "Economía Social y Solidaria");
                        mail.To.Add(emailperfil);
                        mail.Subject = "Economia Social y Solidaria -- Nuevo Encuentro";
                        mail.Body    = "<p>Gracias por usar nuestro sistema. Hacé click en el link de abajo para activar la cuenta</p>";
                        mail.Body   += "<p><a href='" + urla + "Inicio/ActivarCuenta?k=" + perfil.hash + "'>Activar Cuenta</a></p>";
                        // mail.Body += "<p>-------------------</p><p><p>" + datos + "</p><p>-------------------</p>";
                        mail.IsBodyHtml = true;

                        using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587))
                        //using (SmtpClient smtp = new SmtpClient("smtp.encuentrocapital.com.ar", 587))
                        {
                            // smtp.Credentials = new NetworkCredential("*****@*****.**", "kapanga34224389,");
                            smtp.Credentials = new NetworkCredential("*****@*****.**", "Frent3355");
                            smtp.EnableSsl   = true;
                            smtp.Send(mail);
                        }
                    }

                    Response.Cookies["Info"].Value = "Te mandamos un mail para confirmar la cuenta!";
                }

                ctx.SaveChanges();

                return(Json(new { sacar = !(perfil.verificado) }, JsonRequestBehavior.DenyGet));
            }

            return(Json(new { Error = "No se encontró el usuario", JsonRequestBehavior.DenyGet }));
        }
示例#14
0
        public JsonResult Editar(int idVecino, bool?administrador = null, bool?contador = null, bool?encargado = null, bool?noticias = null)
        {
            TanoNEEntities ctx = new TanoNEEntities();
            Vecinos        vec = ctx.Vecinos.FirstOrDefault(a => a.idVecino == idVecino);

            Roles admin = ctx.Roles.FirstOrDefault(a => a.codigoRol == 2);
            Roles cont  = ctx.Roles.FirstOrDefault(a => a.codigoRol == 3);
            Roles enc   = ctx.Roles.FirstOrDefault(a => a.codigoRol == 4);
            Roles noti  = ctx.Roles.FirstOrDefault(a => a.codigoRol == 5);

            //var rolesVecino = ctx.RolesVecinos.Where(a => a.vecinoId == vec.idVecino).ToList<RolesVecinos>();
            //rolesVecino.ForEach(cs => ctx.RolesVecinos.Remove(cs));

            if (administrador.HasValue && administrador.Value)
            {
                ctx.RolesVecinos.Add(new RolesVecinos {
                    Roles = admin, vecinoId = vec.idVecino
                });
            }
            else if (administrador.HasValue && !administrador.Value)
            {
                ctx.RolesVecinos.Remove(vec.RolesVecinos.FirstOrDefault(a => a.rolId == admin.idRol));
            }

            if (contador.HasValue && contador.Value)
            {
                ctx.RolesVecinos.Add(new RolesVecinos {
                    Roles = cont, vecinoId = vec.idVecino
                });
            }
            else if (contador.HasValue && !contador.Value)
            {
                ctx.RolesVecinos.Remove(vec.RolesVecinos.FirstOrDefault(a => a.rolId == cont.idRol));
            }

            if (encargado.HasValue && encargado.Value)
            {
                ctx.RolesVecinos.Add(new RolesVecinos {
                    Roles = enc, vecinoId = vec.idVecino
                });
            }
            else if (encargado.HasValue && !encargado.Value)
            {
                ctx.RolesVecinos.Remove(vec.RolesVecinos.FirstOrDefault(a => a.rolId == enc.idRol));
            }

            if (noticias.HasValue && noticias.Value)
            {
                ctx.RolesVecinos.Add(new RolesVecinos {
                    Roles = noti, vecinoId = vec.idVecino
                });
            }
            else if (noticias.HasValue && !noticias.Value)
            {
                ctx.RolesVecinos.Remove(vec.RolesVecinos.FirstOrDefault(a => a.rolId == noti.idRol));
            }

            ctx.SaveChanges();

            return(Json(new { error = false, admin = administrador, contador = contador, encargado = encargado, noticias = noticias }, JsonRequestBehavior.DenyGet));
        }
示例#15
0
        public ActionResult Cargar()
        {
            TanoNEEntities ctx = new TanoNEEntities();

            return(View());
        }
示例#16
0
        public ActionResult IniciarSesion(string usuario, string pass, string email, string nombres, string telefono, string password, string url, int comuna = -1)
        {
            TanoNEEntities ctx = new TanoNEEntities();

            Response.Cookies.Add(new HttpCookie("Error"));
            Response.Cookies.Add(new HttpCookie("Info"));
            Response.Cookies.Add(new HttpCookie("Mensaje"));


            if (usuario != null)
            {
                //login
                Vecinos vecino = ctx.Vecinos.FirstOrDefault(a => a.correo == usuario);
                if (vecino != null)
                {
                    if (vecino.contrasena == null)
                    {
                        Response.Cookies["Error"].Value = "Se ha reseteado su contraseña. Revise su mail";
                        return(RedirectToAction("Portada", "Noticias"));
                    }

                    if (!vecino.verificado)
                    {
                        Response.Cookies["Error"].Value = "Hay que verificar la cuenta. Revisa tu mail";
                        return(RedirectToAction("Portada", "Noticias"));
                    }

                    pass = GetCrypt(pass);
                    if (vecino.contrasena == pass)
                    {
                        Response.Cookies.Remove("Error");
                        Response.Cookies.Remove("Info");
                        Response.Cookies.Remove("Mensaje");

                        FormsAuthentication.SetAuthCookie(vecino.correo, true);
                        //if (url.Split('/').Length == 3)
                        //    return RedirectToAction(url.Split('/')[2], url.Split('/')[1]);
                        //else
                        return(RedirectToAction("Portada", "Noticias"));
                    }
                    else
                    {
                        Response.Cookies["Error"].Value = "Contraseña no válida";
                    }
                }
                else
                {
                    Response.Cookies["Error"].Value = "Usuario no encontrado, registrese";
                }
            }
            else
            {
                string urla = ConfigurationManager.AppSettings["UrlSitio"];
                //registrar
                Vecinos vecino = ctx.Vecinos.FirstOrDefault(a => a.correo == email);
                if (vecino == null)
                {
                    vecino             = new Vecinos();
                    vecino.correo      = email;
                    vecino.nombres     = nombres;
                    vecino.telefono    = telefono;
                    vecino.contrasena  = GetCrypt(password);
                    vecino.comuna      = comuna;
                    vecino.fechaCreado = DateTime.Now;

                    List <string> hashes = ctx.Vecinos.Select(a => a.hash).ToList();
                    string        hash   = RandomString(25);
                    while (hashes.Contains(hash))
                    {
                        hash = RandomString(25);
                    }

                    vecino.hash = hash;
                    ctx.Vecinos.Add(vecino);


                    using (MailMessage mail = new MailMessage())
                    {
                        //string datos = "Datos para entrar:<br/>Usuario: " + email;
                        // string datos = "Datos para entrar:<br/>Usuario: " + email + " Contraseña :" + password;
                        mail.From = new MailAddress("*****@*****.**", "Economía Social y Solidaria");
                        mail.To.Add(email);
                        mail.Subject = "Economia Social y Solidaria -- Nuevo Encuentro";
                        mail.Body    = "<p>Gracias por usar nuestro sistema. Hacé click en el link de abajo para activar la cuenta</p>";
                        mail.Body   += "<p><a href='" + urla + "Inicio/ActivarCuenta?k=" + hash + "'>Activar Cuenta</a></p>";
                        // mail.Body += "<p>-------------------</p><p><p>" + datos + "</p><p>-------------------</p>";
                        mail.IsBodyHtml = true;

                        using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587))
                        //using (SmtpClient smtp = new SmtpClient("smtp.encuentrocapital.com.ar", 587))
                        {
                            // smtp.Credentials = new NetworkCredential("*****@*****.**", "kapanga34224389,");
                            smtp.Credentials = new NetworkCredential("*****@*****.**", "Frent3355");
                            smtp.EnableSsl   = true;
                            smtp.Send(mail);
                        }
                    }

                    ctx.SaveChanges();

                    Response.Cookies["Info"].Value = "Te mandamos un mail para confirmar la cuenta!";
                }
            }
            return(RedirectToAction("Portada", "Noticias"));
        }