public ActionResult AgregarMetasAgencias(string id, string forma, Agencias agencia) { var error = false; //agregar dia para agencia individual if (!string.IsNullOrEmpty(forma)) { if (forma.Equals("individual")) { //obteneindo values var mesAnio = Request.QueryString["mesAnio"]; var producto = Request.QueryString["producto"]; var meta = Request.QueryString["meta"]; var mes = 0; var anio = 0; DateTime dt; bool fechaValida = DateTime.TryParseExact( mesAnio, "MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt); if (fechaValida) { var f = mesAnio.Split('/'); mes = int.Parse(f[0]); anio = int.Parse(f[1]); } else { ModelState.AddModelError("mesAnio", "Debe elegir una fecha"); error = true; } if (producto.Equals("0")) { ModelState.AddModelError("producto", "Debe elegir un producto"); error = true; } if (String.IsNullOrEmpty(meta)) { ModelState.AddModelError("meta", "Debe introducir una meta"); error = true; } //obteniendo numero de agencia string num = ""; if (!string.IsNullOrEmpty(id)) { string[] ids = id.Split('-'); num = ids[0].Trim(); } else { ModelState.AddModelError("agencia", "Debe elegir una agencia"); error = true; } //buscar agencia if (!error) { TempData["Existe"] = false; Agencias a = db.Agencias.Find(int.Parse(num)); V_Agencias v = db.VAgencias.Find(int.Parse(num)); a.v_agencia = v; var num_agencia = int.Parse(num) ; var tipoProducto = int.Parse(producto); var me = from t in db.Local_Metas_Agencias where t.agencia == num_agencia && t.mes == mes && t.anio == anio && t.tipoProducto == tipoProducto select t; if (a != null) { if (me.Count() > 0) //actualizarlo { var agenciaMeta = me.First(); agenciaMeta.metaNueva = Double.Parse(meta); a.local_metas_agencias = agenciaMeta; a.listaAgencias = new SelectList(claseAgencias.GetAgencias()); TempData["Existe"] = true; return View("MetasAgencias", a); } else //no hay ninguno registrado { var obj = new Agencias(); obj.listaAgencias = new SelectList(claseAgencias.GetAgencias()); try { Local_Metas_Agencias m = new Local_Metas_Agencias(); m.agencia = a.NUMERO_AGENCIA; m.anio = anio; m.mes = mes; m.meta = int.Parse(meta); m.tipoProducto = int.Parse(producto); db.Local_Metas_Agencias.Add(m); db.SaveChanges(); TempData["Success"] = "Se ha agregado exitosamente"; return View("MetasAgencias", obj); } catch (Exception e) { TempData["Error"] = "Ha ocurrido un error."; return View("MetasAgencias", obj); } } } ViewBag.Error = "El Agente no existe"; return View(); } else { //si existe algun erro volver a la pagina inicial var obj = new Agencias(); obj.listaAgencias = new SelectList(claseAgencias.GetAgencias()); return View("MetasAgencias", obj); } } else if (forma.Equals("actualizar")) { var meta = Request.QueryString["meta"]; var mes = int.Parse(Request.QueryString["mes"]); var anio = int.Parse(Request.QueryString["anio"]); var producto = int.Parse(Request.QueryString["producto"]); var numero_agencia = int.Parse(Request.QueryString["numero_agencia"]); if (!string.IsNullOrEmpty(meta)) { var metasAgencias = from m in db.Local_Metas_Agencias where m.agencia == numero_agencia && m.anio == anio && m.mes == mes && m.tipoProducto == producto select m; if (metasAgencias.Count() > 0) { try { var obj = new Agencias(); obj.listaAgencias = new SelectList(claseAgencias.GetAgencias()); Local_Metas_Agencias metaActualizar = metasAgencias.First(); metaActualizar.meta = Double.Parse(meta); db.SaveChanges(); TempData["Success"] = "Se ha actualizado exitosamente"; return View("MetasAgencias", obj); } catch (Exception e) { var obj = new Agencias(); obj.listaAgencias = new SelectList(claseAgencias.GetAgencias()); TempData["Error"] = "Ha ocurrido un error."; return View("MetasAgencias", obj); } } var obja = new Agencias(); obja.listaAgencias = new SelectList(claseAgencias.GetAgencias()); TempData["Error"] = "Ha ocurrido un error."; return View("MetasAgencias", obja); } else { var obj = new Agencias(); obj.listaAgencias = new SelectList(claseAgencias.GetAgencias()); TempData["Error"] = "Ha ocurrido un error."; return View("MetasAgencias", obj); } } //agregar dia para multiples agencias else { var obj = new Agencias(); obj.listaAgencias = new SelectList(claseAgencias.GetAgencias()); return View("MetasAgencias", obj); } } else { var obj = new Agencias(); obj.listaAgencias = new SelectList(claseAgencias.GetAgencias()); return View("MetasAgencias", obj); } }
public ActionResult AgregarMetasAgencias(HttpPostedFileBase file) { List<string> errores = new List<string>(); try { //obteneindo values var mesAnio = Request.Form["mesAnio"]; var producto = Request.Form["producto"]; int productint = 0; var mes = 0; var anio = 0; var error = false; DateTime dt; bool fechaValida = DateTime.TryParseExact( mesAnio, "MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt); if (fechaValida) { var f = mesAnio.Split('/'); mes = int.Parse(f[0]); anio = int.Parse(f[1]); } else { ModelState.AddModelError("mesAnioArchivo", "Debe elegir una fecha"); error = true; } if (producto.Equals("0")) { ModelState.AddModelError("productoArchivo", "Debe elegir un producto"); error = true; } if (!error) { //verificar que el archivo no sea nulo if (file != null) { if (file.ContentLength > 0) { var filename = Path.GetFileName(file.FileName); var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), filename); file.SaveAs(path); string num_agencia, meta; num_agencia = meta = ""; int numeroAgencia = 0; double metaint = 0; var connString = ""; try { var strFileType = Path.GetExtension(path).ToLower(); //Connection String to Excel Workbook for differente extensions if (strFileType.Trim() == ".xls") { connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\""; } else if (strFileType.Trim() == ".xlsx") { connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\""; } using (OleDbConnection connection = new OleDbConnection(connString)) { //abriendo conexion connection.Open(); //obteniendo nombre de la tabla System.Data.DataTable dbSchema = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); string sheet = dbSchema.Rows[0]["TABLE_NAME"].ToString(); string queryRead = "SELECT * FROM [" + sheet + "]"; //QUERY LECTURA OleDbCommand cmdRead = new OleDbCommand(queryRead, connection); //leyendo el sheet OleDbDataReader reader = cmdRead.ExecuteReader(); while (reader.Read()) { //leyendo columna por columna de cada fila num_agencia = reader[0].ToString(); meta = reader[1].ToString(); productint = int.Parse(producto); //verificar agencia y meta valida if (num_agencia.StartsWith("20") && num_agencia.Length == 6) { numeroAgencia = int.Parse(num_agencia); var ag = db.Agencias.Find(numeroAgencia); if (ag != null) { if (!string.IsNullOrEmpty(meta)) { metaint = Double.Parse(meta); var agencia = from a in db.Local_Metas_Agencias where a.anio == anio && a.mes == mes && a.agencia == numeroAgencia && a.tipoProducto == productint select a; if (agencia.Count() > 0) { agencia.First().meta = metaint; } else { Local_Metas_Agencias m = new Local_Metas_Agencias(); m.agencia = numeroAgencia; m.meta = metaint; m.mes = mes; m.anio = anio; m.tipoProducto = productint; db.Local_Metas_Agencias.Add(m); } } else { errores.Add("No hay una meta válida para agencia " + num_agencia); } } else { errores.Add("No existe la agencia " + num_agencia); } } else { errores.Add(num_agencia + " No está en el formato correcto."); } } reader.Close(); db.SaveChanges(); TempData["Errores"] = errores.ToList(); return RedirectToAction("Success"); } } catch (Exception e) { errores.Add(e.ToString()); TempData["Errores"] = errores.ToList(); return RedirectToAction("Error"); } } } else { errores.Add("Debe subir un archivo"); TempData["Errores"] = errores.ToList(); return RedirectToAction("Error"); } } var obj = new Agencias(); obj.listaAgencias = new SelectList(claseAgencias.GetAgencias()); return View("MetasAgencias", obj); } catch (Exception e) { errores.Add(e.ToString()); TempData["Errores"] = errores.ToList(); return RedirectToAction("Error"); } }