public JsonResult SubirArchivo(HttpPostedFileBase archivo, DocumentoRecepcionModel model) { string RutaArchivos = ConfigurationManager.AppSettings["Uploads"].ToString(); string Carpeta = "File_" + Usuario.Idusuario.ToString(); string Rutagrabar = RutaArchivos + Carpeta + "\\"; string file = string.Empty; string archivo_subir = (DateTime.Now.ToString("yyyyMMddHHmmss") + "_" + archivo.FileName).ToLower(); archivo_subir = archivo_subir.Replace(" ", "_").ToString(); var mod_archivo = new DocumentoRecepcionModel(); var allowedExtensions = new[] { ".xlsx", ".xls" }; var checkextension = Path.GetExtension(archivo.FileName).ToLower(); if (!allowedExtensions.Contains(checkextension)) { return(Json(new { res = false, msj = "No se puede subir archivos con la extensión: " + checkextension }, JsonRequestBehavior.AllowGet)); } else { file = Rutagrabar + archivo_subir; } try { if (Directory.Exists(Rutagrabar)) { archivo.SaveAs(file); } else { Directory.CreateDirectory(Rutagrabar); archivo.SaveAs(file); } //validar archivo... // const Int32 BufferSize = 128; //var line = string.Empty; try { var book = new ExcelQueryFactory(file); var headers = book.GetColumnNames("Carga01"); var _datos = book.Worksheet(0).Skip(1); var comprobar = headers.ToList(); //if ("Código" != comprobar[0]) // return Json(new { res = false, msj = "El archivo no tiene el formato establecido." }); //if ("Modelo" != comprobar[1]) // return Json(new { res = false, msj = "El archivo no tiene el formato establecido." }); //if ("Serie" != comprobar[2]) // return Json(new { res = false, msj = "El archivo no tiene el formato establecido." }); //if ("IMEI" != comprobar[3]) // return Json(new { res = false, msj = "El archivo no tiene el formato establecido." }); //if ("MAC" != comprobar[4]) // return Json(new { res = false, msj = "El archivo no tiene el formato establecido." }); //if ("Cantidad" != comprobar[5]) // return Json(new { res = false, msj = "El archivo no tiene el formato establecido." }); var resultado = (from row_ in book.Worksheet(0) let item = new DocumentoRecepcionDetalleModel { codigo = row_[0].Value.ToString(), modelo = row_[1].Value.ToString(), serie = row_[2].Value.ToString(), imei = row_[3].Value.ToString(), mac = row_[4].Value.ToString(), _cantidad_aux = row_[5].Value.ToString(), ubicacion = row_[6].Value.ToString(), caja = row_[7].Value.ToString(), pallet = row_[8].Value.ToString(), // Monto = row_[3].Cast<decimal>() } select item).ToList(); List <DocumentoRecepcionDetalleModel> auxlist = new List <DocumentoRecepcionDetalleModel>(); int max = resultado.Count; int i = 1; while (max > i) { resultado[i].cantidad = Convert.ToInt32(resultado[i]._cantidad_aux); auxlist.Add(resultado[i]); i++; } Session["DocumentoRecepcion"] = auxlist; #region comprobar requisitos de la carga ProductoModel modProducto = null; String Productos = null; List <DocumentoRecepcionDetalleModel> det; foreach (var item in auxlist) { Productos = Productos + "," + item.codigo; } var resp = new ProductoData().listarProductoxId(Productos); foreach (var item in auxlist) { modProducto = resp.Where(x => x.codigoproducto.Equals(item.codigo)).SingleOrDefault(); if (modProducto == null) { return(Json(new { res = false, msj = "El producto: " + item.codigo + " no existe en la base de datos." })); } item.idproducto = modProducto.idproducto.Value; item.idtipoproducto = modProducto.idtipoproducto.Value; item.repuesto = modProducto.repuesto.Value; item.idmodelo = modProducto.idmodelo.Value; switch (modProducto.idrequisitoascanear) { case (Int32)Constantes.Scanear.Imei: if (string.IsNullOrEmpty(item.imei)) { return(Json(new { res = false, msj = "La carga requiere del número de IMEI" })); } break; case (Int32)Constantes.Scanear.Mac: if (string.IsNullOrEmpty(item.mac)) { return(Json(new { res = false, msj = "La carga requiere del número de MAC" })); } break; case (Int32)Constantes.Scanear.Serie: if (string.IsNullOrEmpty(item.serie)) { return(Json(new { res = false, msj = "La carga requiere del número de Serie" })); } break; case (Int32)Constantes.Scanear.SerieImei: if (string.IsNullOrEmpty(item.imei)) { return(Json(new { res = false, msj = "La carga requiere del número de IMEI" })); } if (string.IsNullOrEmpty(item.serie)) { return(Json(new { res = false, msj = "La carga requiere del número de Serie" })); } break; case (Int32)Constantes.Scanear.SerieImeiMac: if (string.IsNullOrEmpty(item.imei)) { return(Json(new { res = false, msj = "La carga requiere del número de IMEI" })); } if (string.IsNullOrEmpty(item.serie)) { return(Json(new { res = false, msj = "La carga requiere del número de Serie" })); } if (string.IsNullOrEmpty(item.mac)) { return(Json(new { res = false, msj = "La carga requiere del número de MAC" })); } break; default: break; } } Session["DocumentoRecepcion"] = auxlist; foreach (var item in resp) { switch (item.idrequisitoascanear) { case (Int16)Constantes.Scaneo.IMEI: foreach (var item1 in auxlist.Where(x => x.codigo == item.codigoproducto).ToList()) { det = auxlist .Where(x => x.codigo == item.codigoproducto) .Where(x => x.imei.Equals(item1.imei)).ToList(); if (det.Count > 1) { return(Json(new { res = false, msj = "El producto: " + item1.imei + " se está registrando más de una vez." })); } } break; case (Int16)Constantes.Scaneo.SerieIMEI: foreach (var item1 in auxlist.Where(x => x.codigo == item.codigoproducto).ToList()) { det = auxlist .Where(x => x.codigo == item.codigoproducto) .Where(x => x.serie.Equals(item1.serie) && x.imei.Equals(item1.imei)).ToList(); if (det.Count > 1) { return(Json(new { res = false, msj = "El producto: " + item1.codigo + " se está registrando más de una vez." })); } } break; case (Int16)Constantes.Scaneo.Serie: foreach (var item1 in auxlist.Where(x => x.codigo == item.codigoproducto).ToList()) { det = auxlist .Where(x => x.codigo == item.codigoproducto) .Where(x => x.serie.Equals(item1.serie)).ToList(); if (det.Count > 1) { return(Json(new { res = false, msj = "El producto: " + item1.codigo + " se está registrando más de una vez." })); } } break; default: break; } } #endregion } catch (Exception ex) { return(Json(new { res = false, msj = "Existen datos en la columna cantidad que no son números enteros" })); //throw; } //var idarchivo = new DataAccess.Liquidacion.LiquidacionData().InsertarArchivo(mod_archivo); return(Json(new { res = true, archivo = "Nombre del archivo: " + archivo.FileName, msj = "Se cargó el archivo correctamente" }, JsonRequestBehavior.AllowGet)); } catch (Exception) { return(Json(new { res = false, msj = "Ocurrió un error al momento de cargar el archivo." })); } //return Json(new { res = true }); }