Пример #1
0
        public ActionResult GuardarFichero(int pedidoId, int idTipo)
        {
            var transfer   = new ClientTransfer();
            var parameters = new SaveFicheroParameters();

            if (Request.Files.Count > 0)
            {
                var file = Request.Files[0];

                if (file != null && file.ContentLength > 0)
                {
                    if (file.ContentLength / 1024 > 20480)
                    {
                        transfer.Errors.Add("Este fichero ha excedido el tamaño permitido.");
                        return(Json(transfer));
                    }
                    var content = ReadFully(file.InputStream);
                    parameters.Content  = content;
                    parameters.IdPedido = pedidoId;
                    parameters.IdTipo   = idTipo;
                    parameters.Name     = file.FileName;
                    parameters.MimeType = file.ContentType;
                }
            }
            var user = User.Identity;

            if (user == null)
            {
                transfer.Errors.Add(CommonControllerStrings.ErrorSinUsuario);
                return(Json(transfer));
            }
            parameters.IdUsuario = int.Parse(user.Name);

            var res = _pedidosService.GuardarFichero(parameters);

            if (res.HasErrors)
            {
                transfer.Errors.AddRange(res.Errors);
            }
            if (res.HasWarnings)
            {
                transfer.Warnings.AddRange(res.Warnings);
            }

            if (transfer.HasErrors || transfer.HasWarnings)
            {
                return(Json(transfer));
            }

            var fichero       = _ficherosService.Get(parameters.IdPedido.Value, parameters.IdTipo.Value);
            var cambiarEstado = _pedidosService.CambiarEstado(pedidoId, int.Parse(user.Name));

            transfer.Data = new { IdFichero = fichero.Id, EstadoModificado = cambiarEstado, Estado = fichero.Pedido.Estado.Nombre };
            return(Json(transfer));
        }
Пример #2
0
        public BaseResult GuardarFichero(SaveFicheroParameters parameters)
        {
            var result           = new BaseResult();
            var extension        = Path.GetExtension(parameters.Name);
            var pedido           = _dbContext.Pedidos.Find(parameters.IdPedido);
            var mimes            = _ficherosService.GetMimes();
            var tipoFicheroNuevo = _dbContext.TiposFicheros.Find(parameters.IdTipo);

            if (!mimes.Any(a =>
                           a.Nombre.Contains(parameters.MimeType) && a.Extension.Contains(extension?.ToLower() ?? "")))
            {
                result.Errors.Add(PedidoStrings.ErrorFicheroNoValido);
            }
            else if (pedido == null)
            {
                result.Errors.Add(PedidoStrings.ErrorNoPedido);
            }
            else
            {
                if (parameters.IdTipo == (int)TipoFicheroEnum.RecibiConforme)
                {
                    if (!pedido.Polizas.Any())
                    {
                        result.Errors.Add(PedidoStrings.ErrorNoRCNoPolizas);
                        return(result);
                    }
                }

                var rutaArchivo   = FileHelper.GetPath(pedido.Id, parameters.IdTipo.Value, extension);
                var ficheroActual = _ficherosService.Get(parameters.IdPedido.Value, parameters.IdTipo.Value);
                if (ficheroActual != null)
                {
                    var rutaFicheroActual = FileHelper.GetPath(pedido.Id, parameters.IdTipo.Value, Path.GetExtension(ficheroActual.Nombre));

                    if (FileHelper.Exist(rutaFicheroActual))
                    {
                        if (!FileHelper.RemoveFile(rutaFicheroActual))
                        {
                            result.Errors.Add(PedidoStrings.ErrorEliminarFichero);
                        }
                        else
                        {
                            var seguimiento = new Seguimiento
                            {
                                PedidoId    = pedido.Id,
                                Fecha       = DateTime.Now,
                                Descripcion = string.Format(CommonServiceStrings.TextSegEliminarFichero, ficheroActual.Tipo.Nombre),
                                TipoId      = (int)TipoSeguimientoEnum.Documentos,
                                UsuarioId   = parameters.IdUsuario.Value
                            };
                            _dbContext.Seguimientos.Add(seguimiento);
                        }
                    }
                    _dbContext.Ficheros.Remove(ficheroActual);
                }

                if (!FileHelper.WriteFile(rutaArchivo, parameters.Content))
                {
                    result.Errors.Add(PedidoStrings.ErrorSubirFichero);
                }

                if (result.HasErrors)
                {
                    return(result);
                }

                var fichero = new Fichero
                {
                    PedidoId = pedido.Id,
                    TipoId   = parameters.IdTipo.Value,
                    EstadoId = (int)FicheroEstadoEnum.Recibido,
                    Nombre   = parameters.Name
                };
                var tiposFicherosConEstados = new List <int> {
                    (int)TipoFicheroEnum.FacturaComercial, (int)TipoFicheroEnum.Sicoin, (int)TipoFicheroEnum.Dam, (int)TipoFicheroEnum.Goc, (int)TipoFicheroEnum.Dav, (int)TipoFicheroEnum.Dui
                };
                var seg = new Seguimiento
                {
                    PedidoId    = pedido.Id,
                    Fecha       = DateTime.Now,
                    Descripcion = tiposFicherosConEstados.Any(a => a == tipoFicheroNuevo.Id) ? string.Format(CommonServiceStrings.TextSegCrearFicheroEstado, tipoFicheroNuevo.Nombre)
                    : string.Format(CommonServiceStrings.TextSegCrearFichero, tipoFicheroNuevo.Nombre),
                    TipoId    = (int)TipoSeguimientoEnum.Documentos,
                    UsuarioId = parameters.IdUsuario.Value
                };
                _dbContext.Seguimientos.Add(seg);
                _dbContext.Ficheros.Add(fichero);


                _dbContext.SaveChanges();
            }

            return(result);
        }