using SteamWare;
using System;
using System.IO;
namespace NKC_WF.WebUserContols
{
public class FileUploadEventArgs : EventArgs
{
///
/// Evento con argomenti soppevato post fileUpload
///
///
///
///
public FileUploadEventArgs(string localPath, string fileName, string batchName)
{
_localPath = localPath;
_fileName = fileName;
_batchName = batchName;
}
private string _localPath;
private string _fileName;
private string _batchName;
public string LocalPath
{
get { return _localPath; }
set { _localPath = value; }
}
public string FileName
{
get { return _fileName; }
set { _fileName = value; }
}
public string BatchName
{
get { return _batchName; }
set { _batchName = value; }
}
}
public partial class cmp_fileUpload : BaseUserControl
{
///
/// Evento upload e salvataggio su server IIS del file...
///
public event EventHandler eh_FileUploaded;
///
/// Solelva evento salvataggio file con messaggio path/nome
///
///
///
public void reportFileUploaded(FileUploadEventArgs e)
{
EventHandler handler = eh_FileUploaded;
if (handler != null)
{
handler(this, e);
}
}
///
/// Folder di upload temporaneo files
///
protected string _tempUploadDir = memLayer.ML.CRS("_tempUploadDir");
///
/// Folder REMOTA x copia verso SQL
///
protected string _SqlCopyDir = memLayer.ML.CRS("_SqlCopyDir");
///
/// Folder x SQL import
///
protected string _SqlImportDir = memLayer.ML.CRS("_SqlImportDir");
///
/// permesso scrittura SE E' abilitato a aprtire dalla tab diritti...
///
public bool userIsAuth
{
get
{
return true;
//return (idxAmm + idxFornitore > 0);
}
}
public bool isWriteEnabled
{
get
{
bool answ = false;
bool.TryParse(hfWriteEnabled.Value, out answ);
return answ;
}
set
{
hfWriteEnabled.Value = value.ToString();
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
fisVisFU(false);
deleteOldFiles();
}
divNewEdit.Visible = userIsAuth && isWriteEnabled;
}
///
/// Procedee a bonificare la cartella di upload dei files + vecchi di 3 mesi
///
private void deleteOldFiles()
{
string dirPath = Server.MapPath(_tempUploadDir);
// elenco files nella directory
string[] files = Directory.GetFiles(dirPath);
// li guardo tutti e se vecchi li elimino...
foreach (string file in files)
{
FileInfo fi = new FileInfo(file);
if (fi.LastAccessTime < DateTime.Now.AddMonths(-3))
fi.Delete();
}
}
protected void Upload(object sender, EventArgs e)
{
string csvFileName = "";
string uploadedFilename = "";
string batchName = "";
string savedFilename = "";
string contentType = "";
DateTime adesso = DateTime.Now;
string dirFrom = Server.MapPath(_tempUploadDir);
string dirTo = $"{_SqlCopyDir}{adesso.ToString("yyyy-MM")}\\";
string dirImport = $"{_SqlImportDir}{adesso.ToString("yyyy-MM")}\\";
// se c'è un file
if (FileUpload1.PostedFile != null)
{
uploadedFilename = Path.GetFileName(FileUpload1.PostedFile.FileName.Replace(" ", "_"));
csvFileName = $"{adesso.ToString("dd-HHmmss")}_{uploadedFilename}";
batchName = uploadedFilename.Replace(".csv", "");
savedFilename = Server.MapPath($"{_tempUploadDir}{csvFileName}");
contentType = FileUpload1.PostedFile.ContentType;
// accedo allo stream del file allegato
using (Stream fs = FileUpload1.PostedFile.InputStream)
{
// scrivo su file
FileStream file = new FileStream(savedFilename, FileMode.Create, FileAccess.Write);
fs.CopyTo(file);
file.Close();
}
reportFileUploaded(new FileUploadEventArgs(dirFrom, csvFileName, batchName));
#if false
try
{
// copio su SQL...
fileMover.obj.copiaFile(dirFrom, dirTo, csvFileName);
// chiamo procedura SQL x import...
DataLayer.man.taImpLog.importCsvOrd($"{dirImport}", csvFileName, batchName, ";", "\n", "2", 0, 0, 0);
raiseEvent();
}
catch (Exception exc)
{
logger.lg.scriviLog($"Eccezione in Upload file:{Environment.NewLine}{exc}");
}
#endif
}
Response.Redirect(Request.RawUrl);
}
protected void btnAdd_Click(object sender, EventArgs e)
{
fisVisFU(true);
btnUpload.Text = "Carica Nuovo";
}
///
/// fix visibilità controllo file upload
///
/// mostra controlli add=true oppure nasconde = false
private void fisVisFU(bool showAdd)
{
divFileUpl.Visible = showAdd;
btnAdd.Visible = !showAdd;
btnCancel.Visible = showAdd;
}
protected void btnCancel_Click(object sender, EventArgs e)
{
fisVisFU(false);
}
}
}