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); }
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); }
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 })); }
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")); }
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); }
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" })); } }
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" })); } }
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); } } } }
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 " })); } }
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 })); }
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)); }
public ActionResult Cargar() { TanoNEEntities ctx = new TanoNEEntities(); return(View()); }
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")); }