public ActionResult SelectAFile(object[] data)
{
SelectFileViewModel model = new SelectFileViewModel();
TaskManager = (TaskManager)Session["TaskManager"];
if (data != null) TaskManager.AddToBus(data);
model.StepInfo = TaskManager.Current();
TaskManager.Current().SetValid(false);
if (TaskManager != null)
{
// is path of FileStream exist
if (TaskManager.Bus.ContainsKey(TaskManager.FILEPATH))
{
if (IsSupportedExtention(TaskManager))
{
try
{
if (GetDataStructureType().Equals(DataStructureType.Structured))
{
#region structured datastructure
//try save FileStream
string filePath = TaskManager.Bus[TaskManager.FILEPATH].ToString();
//if extention like a makro excel FileStream
if (TaskManager.Bus[TaskManager.EXTENTION].ToString().Equals(".xlsm"))
{
// open FileStream
ExcelReader reader = new ExcelReader();
Stream = reader.Open(filePath);
//Session["Stream"] = Stream;
//check is it template
if (reader.IsTemplate(Stream))
{
TaskManager.Current().SetValid(true);
TaskManager.AddToBus(TaskManager.IS_TEMPLATE, "true");
}
else
{
model.ErrorList.Add(new Error(ErrorType.Other, "File is not a Template"));
TaskManager.AddToBus(TaskManager.IS_TEMPLATE, "false");
}
Stream.Close();
}
else
{
TaskManager.AddToBus(TaskManager.IS_TEMPLATE, "false");
// excel FileStream
if (TaskManager.Bus[TaskManager.EXTENTION].ToString().Equals(".xls"))
{
// open FileStream
ExcelReader reader = new ExcelReader();
Stream = reader.Open(filePath);
//Session["Stream"] = Stream;
TaskManager.Current().SetValid(true);
Stream.Close();
}
// text ór csv FileStream
else if (TaskManager.Bus[TaskManager.EXTENTION].ToString().Equals(".csv") || TaskManager.Bus[TaskManager.EXTENTION].ToString().Equals(".txt"))
{
// open FileStream
AsciiReader reader = new AsciiReader();
Stream = reader.Open(filePath);
//Session["Stream"] = Stream;
TaskManager.Current().SetValid(true);
Stream.Close();
}
}
#endregion
}
if (GetDataStructureType().Equals(DataStructureType.Unstructured))
{
#region unstructured datastructure
//try save FileStream
string filePath = TaskManager.Bus[TaskManager.FILEPATH].ToString();
if(FileHelper.FileExist( filePath ))
{
TaskManager.Current().SetValid(true);
}
#endregion
}
}
catch
{
model.ErrorList.Add(new Error(ErrorType.Other, "Cannot access FileStream on server."));
}
}
else
{
model.ErrorList.Add(new Error(ErrorType.Other, "File is not supported."));
}
}
else
{
model.ErrorList.Add(new Error(ErrorType.Other, "No FileStream selected or submitted."));
}
if (TaskManager.Current().IsValid())
{
TaskManager.AddExecutedStep(TaskManager.Current());
TaskManager.GoToNext();
Session["TaskManager"] = TaskManager;
ActionInfo actionInfo = TaskManager.Current().GetActionInfo;
return RedirectToAction(actionInfo.ActionName, actionInfo.ControllerName, new RouteValueDictionary { { "area", actionInfo.AreaName }, { "index", TaskManager.GetCurrentStepInfoIndex() } });
}
}
model.serverFileList = GetServerFileList();
//get datastuctureType
model.DataStructureType = GetDataStructureType();
model.SupportedFileExtentions = UploadWizardHelper.GetExtentionList(model.DataStructureType);
return PartialView(model);
}