コード例 #1
0
        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 });
        }