Ejemplo n.º 1
0
        /// <summary>
        /// Nuovo file nella lista degli upload
        /// </summary>
        /// <param name="request"></param>
        /// <param name="infoUtente"></param>
        /// <returns>Response</returns>
        public static Services.FilesUploader.UploadFile.UploadFileResponse AddNewFile(Services.FilesUploader.UploadFile.UploadFileRequest request, DocsPaVO.utente.InfoUtente infoUtente)
        {
            Services.FilesUploader.UploadFile.UploadFileResponse response = new Services.FilesUploader.UploadFile.UploadFileResponse();
            DocsPaDB.Query_DocsPAWS.UploadFiles uploadFilesDb             = new DocsPaDB.Query_DocsPAWS.UploadFiles();
            Domain.FileInUpload fileInUpClient = request.FileInUp;

            try
            {
                if (fileInUpClient != null)
                {
                    //DocsPaVO.UploadFiles.FileInUpload fileInUpServer = uploadFilesDb.GetFileInUpload(fileInUpClient.fileHash, infoUtente);
                    if (string.IsNullOrEmpty(fileInUpClient.strIdentity))
                    {
                        fileInUpClient.strIdentity = (fileInUpClient.fileDescription.ToUpper().TrimStart().TrimEnd() + "#" + fileInUpClient.fileName.ToUpper().TrimStart().TrimEnd());
                    }

                    DocsPaVO.UploadFiles.FileInUpload fileInUpServer = uploadFilesDb.GetFileInUpload(fileInUpClient.strIdentity, infoUtente);

                    if (fileInUpServer != null && !string.IsNullOrEmpty(fileInUpServer.StrIdentity))
                    {
                        throw new PisException("FILE_ALREDY_EXIST");
                    }

                    fileInUpServer = new DocsPaVO.UploadFiles.FileInUpload();

                    fileInUpServer.ChunkNumber      = -1;
                    fileInUpServer.FileHash         = fileInUpClient.fileHash;
                    fileInUpServer.FileName         = fileInUpClient.fileName;
                    fileInUpServer.FileDescription  = fileInUpClient.fileDescription;
                    fileInUpServer.FileSenderPath   = fileInUpClient.fileSenderPath;
                    fileInUpServer.FileSize         = fileInUpClient.fileSize;
                    fileInUpServer.MachineName      = fileInUpClient.machineName;
                    fileInUpServer.TotalChunkNumber = 0;
                    fileInUpServer.RepositoryPath   = string.Empty;
                    fileInUpServer.Order            = fileInUpClient.order;
                    fileInUpServer.IdRuolo          = fileInUpClient.idRuolo;
                    fileInUpServer.StrIdentity      = fileInUpClient.strIdentity;

                    if (uploadFilesDb.InsertFileInUpload(fileInUpServer, infoUtente))
                    {
                        response.StrIdentity = fileInUpServer.StrIdentity;
                        response.Success     = true;
                    }
                }
                else
                {
                    throw new PisException("PARAMETER_FILEINUP_MISSING");
                }
            }
            catch (PisException pisEx)
            {
                response.Error = new Services.ResponseError
                {
                    Code        = pisEx.ErrorCode,
                    Description = pisEx.Description
                };

                response.Success = false;
            }

            return(response);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Inizio o riprendo l'upload di un file per l'utente loggato
        /// </summary>
        /// <param name="request"></param>
        /// <param name="infoUtente"></param>
        /// <returns>Response</returns>
        public static Services.FilesUploader.UploadFile.UploadFileResponse UploadFile(Services.FilesUploader.UploadFile.UploadFileRequest request, DocsPaVO.utente.InfoUtente infoUtente)
        {
            Services.FilesUploader.UploadFile.UploadFileResponse response = new Services.FilesUploader.UploadFile.UploadFileResponse();
            DocsPaDB.Query_DocsPAWS.UploadFiles uploadFilesDb             = new DocsPaDB.Query_DocsPAWS.UploadFiles();
            Domain.FileInUpload fileInUpClient = request.FileInUp;

            try
            {
                if (fileInUpClient != null)
                {
                    //DocsPaVO.UploadFiles.FileInUpload fileInUpServer = uploadFilesDb.GetFileInUpload(fileInUpClient.fileHash, infoUtente);
                    DocsPaVO.UploadFiles.FileInUpload fileInUpServer = uploadFilesDb.GetFileInUpload(fileInUpClient.strIdentity, infoUtente);

                    if (fileInUpServer != null && fileInUpClient.chunkNumber > -1)
                    {
                        if (fileInUpServer.ChunkNumber >= fileInUpClient.chunkNumber)
                        {
                            throw new PisException("FILE_ALREDY_EXIST");
                        }

                        if (string.IsNullOrEmpty(fileInUpServer.RepositoryPath))
                        {
                            string pathOnServer = (System.Configuration.ConfigurationManager.AppSettings["UPLOAD_BIGFILE_REPOSITORY"] != null && !string.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings["UPLOAD_BIGFILE_REPOSITORY"].ToString()) ? System.Configuration.ConfigurationManager.AppSettings["UPLOAD_BIGFILE_REPOSITORY"] : string.Empty);
                            if (!string.IsNullOrEmpty(pathOnServer))
                            {
                                pathOnServer = pathOnServer + @"\" + request.CodeAdm + @"\" + infoUtente.idPeople;
                                if (!string.IsNullOrEmpty(fileInUpClient.fileDescription))
                                {
                                    pathOnServer = pathOnServer + @"\" + fileInUpClient.fileDescription;
                                }

                                Directory.CreateDirectory(pathOnServer);

                                fileInUpServer.RepositoryPath = pathOnServer;
                            }
                        }

                        if (Directory.Exists(fileInUpServer.RepositoryPath))
                        {
                            string     pathSulServer = fileInUpServer.RepositoryPath + @"\" + fileInUpClient.fileName;
                            FileStream file          = new FileStream(pathSulServer, FileMode.Create);
                            file.Write(fileInUpClient.fileContent, 0, fileInUpClient.fileContent.Length);
                            file.Flush();
                            file.Close();

                            fileInUpServer.ChunkNumber      = fileInUpClient.chunkNumber;
                            fileInUpServer.TotalChunkNumber = fileInUpClient.totalChunkNumber;
                            fileInUpServer.FileName         = fileInUpClient.fileName;
                            fileInUpServer.FileDescription  = fileInUpClient.fileDescription;
                            fileInUpServer.Order            = fileInUpClient.order;
                            fileInUpServer.IdRuolo          = fileInUpClient.idRuolo;

                            if (uploadFilesDb.UpdateFileInUpload(fileInUpServer, infoUtente))
                            {
                                if (fileInUpServer.ChunkNumber == fileInUpServer.TotalChunkNumber - 1)
                                {
                                    Compression.CompressionManager compressionManager = new Compression.CompressionManager();
                                    string[] volumesFileZip = new string[fileInUpServer.TotalChunkNumber];
                                    string[] fileNamePart   = fileInUpServer.FileName.Split('.');
                                    string   fileExt        = fileNamePart[fileNamePart.Length - 1];
                                    //string numeroFileZip = fileNamePart[fileNamePart.Length - 2];
                                    string partialFileName = string.Empty;

                                    for (int j = 0; j < fileNamePart.Length - 2; j++)
                                    {
                                        partialFileName = partialFileName + fileNamePart[j] + ".";
                                    }

                                    for (int i = 0; i < fileInUpServer.TotalChunkNumber; i++)
                                    {
                                        volumesFileZip[i] = (partialFileName + i.ToString() + "." + fileExt);
                                    }

                                    string[] splitName;
                                    if (fileInUpServer.FileSenderPath.Contains('/'))
                                    {
                                        splitName = fileInUpServer.FileSenderPath.Split('/');
                                    }
                                    else
                                    {
                                        splitName = fileInUpServer.FileSenderPath.Split('\\');
                                    }

                                    string fileNameUncompressed = splitName[splitName.Length - 1];

                                    if (compressionManager.DecompressArchiveVolumes(fileInUpServer.RepositoryPath, fileNameUncompressed, volumesFileZip, true))
                                    {
                                        fileInUpServer.ChunkNumber = fileInUpServer.TotalChunkNumber;
                                        fileInUpServer.FileName    = fileNameUncompressed;
                                        uploadFilesDb.UpdateFileInUpload(fileInUpServer, infoUtente);
                                        response.Success = true;
                                    }
                                }
                                else
                                {
                                    response.Success = true;
                                }
                            }
                        }
                        else
                        {
                            throw new PisException("SERVER_PATH_NOT_FOUND");
                        }
                    }
                    else
                    {
                        fileInUpServer = new DocsPaVO.UploadFiles.FileInUpload();

                        string pathOnServer = (System.Configuration.ConfigurationManager.AppSettings["UPLOAD_BIGFILE_REPOSITORY"] != null && !string.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings["UPLOAD_BIGFILE_REPOSITORY"].ToString()) ? System.Configuration.ConfigurationManager.AppSettings["UPLOAD_BIGFILE_REPOSITORY"] : string.Empty);

                        if (!string.IsNullOrEmpty(pathOnServer))
                        {
                            if (string.IsNullOrEmpty(fileInUpClient.strIdentity))
                            {
                                fileInUpClient.strIdentity = (fileInUpClient.fileDescription.ToUpper().TrimStart().TrimEnd() + "#" + fileInUpClient.fileName.ToUpper().TrimStart().TrimEnd());
                            }

                            pathOnServer = pathOnServer + @"\" + request.CodeAdm + @"\" + infoUtente.idPeople;
                            Directory.CreateDirectory(pathOnServer);

                            string     pathFileOnServer = pathOnServer + @"\" + fileInUpClient.fileName;
                            FileStream file             = new FileStream(pathFileOnServer, FileMode.Create);
                            file.Write(fileInUpClient.fileContent, 0, fileInUpClient.fileContent.Length);
                            file.Flush();
                            file.Close();

                            fileInUpServer.ChunkNumber      = 0;
                            fileInUpServer.FileHash         = fileInUpClient.fileHash;
                            fileInUpServer.FileName         = fileInUpClient.fileName;
                            fileInUpServer.FileDescription  = fileInUpClient.fileDescription;
                            fileInUpServer.FileSenderPath   = fileInUpClient.fileSenderPath;
                            fileInUpServer.FileSize         = fileInUpClient.fileSize;
                            fileInUpServer.MachineName      = fileInUpClient.machineName;
                            fileInUpServer.TotalChunkNumber = fileInUpClient.totalChunkNumber;
                            fileInUpServer.RepositoryPath   = pathOnServer;
                            fileInUpServer.Order            = fileInUpClient.order;
                            fileInUpServer.IdRuolo          = fileInUpClient.idRuolo;
                            fileInUpServer.StrIdentity      = fileInUpClient.strIdentity;

                            if (uploadFilesDb.InsertFileInUpload(fileInUpServer, infoUtente))
                            {
                                response.StrIdentity = fileInUpServer.StrIdentity;
                                response.Success     = true;
                            }
                        }
                        else
                        {
                            throw new PisException("SERVER_CONFIGURATION_ERROR");
                        }
                    }
                }
                else
                {
                    throw new PisException("PARAMETER_FILEINUP_MISSING");
                }
            }
            catch (PisException pisEx)
            {
                response.Error = new Services.ResponseError
                {
                    Code        = pisEx.ErrorCode,
                    Description = pisEx.Description
                };

                response.Success = false;
            }

            return(response);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Cancellazione di tutte le parti relative al file in upload
        /// </summary>
        /// <param name="request"></param>
        /// <param name="infoUtente"></param>
        /// <returns>Response</returns>
        public static Services.FilesUploader.UploadFile.UploadFileResponse DeleteFileInUpload(Services.FilesUploader.UploadFile.UploadFileRequest request, DocsPaVO.utente.InfoUtente infoUtente)
        {
            Services.FilesUploader.UploadFile.UploadFileResponse response = new Services.FilesUploader.UploadFile.UploadFileResponse();
            DocsPaDB.Query_DocsPAWS.UploadFiles uploadFilesDb             = new DocsPaDB.Query_DocsPAWS.UploadFiles();
            Domain.FileInUpload fileInUpClient = request.FileInUp;

            try
            {
                if (fileInUpClient != null)
                {
                    //DocsPaVO.UploadFiles.FileInUpload fileInUpServer = uploadFilesDb.GetFileInUpload(fileInUpClient.fileHash, infoUtente);
                    DocsPaVO.UploadFiles.FileInUpload fileInUpServer = uploadFilesDb.GetFileInUpload(fileInUpClient.strIdentity, infoUtente);

                    if (fileInUpServer != null)
                    {
                        string pathSulServer = string.Empty;

                        if (fileInUpServer != null && !string.IsNullOrEmpty(fileInUpServer.StrIdentity))
                        {
                            pathSulServer = fileInUpServer.RepositoryPath; // +@"\" + fileInUpClient.fileName;
                        }
                        else
                        {
                            pathSulServer = (System.Configuration.ConfigurationManager.AppSettings["UPLOAD_BIGFILE_REPOSITORY"] != null && !string.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings["UPLOAD_BIGFILE_REPOSITORY"].ToString()) ? System.Configuration.ConfigurationManager.AppSettings["UPLOAD_BIGFILE_REPOSITORY"] : string.Empty);
                        }

                        if (!string.IsNullOrEmpty(pathSulServer) && Directory.Exists(fileInUpServer.RepositoryPath))
                        {
                            string[] fileNamePart    = fileInUpServer.FileName.Split('.');
                            string   fileExt         = fileNamePart[fileNamePart.Length - 1];
                            string   partialFileName = fileInUpServer.FileName.Substring(0, fileInUpServer.FileName.Length - (fileExt.Length + 2));

                            for (int i = 0; i < fileInUpServer.TotalChunkNumber; i++)
                            {
                                string completeFileName = @"\" + partialFileName + i.ToString() + "." + fileExt;
                                File.Delete(pathSulServer + completeFileName);
                            }

                            //uploadFilesDb.DeleteFileInUpload(fileInUpClient.fileHash, infoUtente);
                            uploadFilesDb.DeleteFileInUpload(fileInUpClient.fileName, fileInUpClient.fileDescription, infoUtente);

                            response.Success = true;
                        }
                        else
                        {
                            uploadFilesDb.DeleteFileInUpload(fileInUpClient.fileName, fileInUpClient.fileDescription, infoUtente);
                        }
                    }
                    else
                    {
                        throw new PisException("PARAMETER_FILEINUP_MISSING");
                    }
                }
                else
                {
                    throw new PisException("FILE_NOT_EXIST");
                }
            }
            catch (PisException pisEx)
            {
                response.Error = new Services.ResponseError
                {
                    Code        = pisEx.ErrorCode,
                    Description = pisEx.Description
                };

                response.Success = false;
            }

            return(response);
        }