private bool AddNewScenarioResultAndLogFiles(string FileName, MikeScenario CurrentMikeScenario) { richTextBoxStatus.AppendText("\r\n\r\nFile [" + FileName + "]\r\n"); FileInfo fi = new FileInfo(FileName); FileStream fs = fi.OpenRead(); string FilePath = FileName.Substring(0, FileName.LastIndexOf("\\") + 1); string ShortFileName = FileName.Substring(FileName.LastIndexOf("\\") + 1); Application.DoEvents(); //Read all file bytes into an array from the specified file. int nBytes = (int)fi.Length; Byte[] ByteArray = new byte[nBytes]; int nBytesRead = fs.Read(ByteArray, 0, nBytes); fs.Close(); richTextBoxStatus.AppendText("Checking if file already in DB ...\r\n"); Application.DoEvents(); //string TheFileName = fi.FullName.Substring(fi.FullName.LastIndexOf("\\") + 1); CSSPFile csspFileExist = (from f in vpse.CSSPFiles where f.FileName == ShortFileName && f.FileOriginalPath == FilePath && f.FileType == fi.Extension select f).FirstOrDefault <CSSPFile>(); if (csspFileExist != null) { // just replace the content of the file richTextBoxStatus.AppendText("File already exist in DB ...\r\n"); richTextBoxStatus.AppendText("Updating the fileContent in DB ...\r\n"); csspFileExist.FileContent = ByteArray; try { vpse.SaveChanges(SaveOptions.AcceptAllChangesAfterSave); richTextBoxStatus.AppendText("fileContent updated ...\r\n"); return(true); } catch (Exception ex) { richTextBoxStatus.AppendText("Error while updating fileContent ...\r\n"); richTextBoxStatus.AppendText("Error message [" + ex.Message + "] ...\r\n"); lblStatusWorking.Text = "Error ... "; lblStatusUpdate.Text = "See details below ... "; return(false); } } richTextBoxStatus.AppendText("File does not exist in DB ...\r\n"); richTextBoxStatus.AppendText("Saving file in DB ...\r\n"); Application.DoEvents(); CSSPFile csspFile = new CSSPFile(); csspFile.CSSPGuid = Guid.NewGuid(); csspFile.FileName = ShortFileName; csspFile.FileOriginalPath = FilePath; csspFile.FileSize = fi.Length; csspFile.FileDescription = ""; csspFile.FileCreatedDate = fi.CreationTime; csspFile.FileType = fi.Extension; csspFile.FileContent = ByteArray; if (fi.Extension.ToLower() == ".dfsu") { csspFile.Purpose = PurposeType.MikeResult.ToString(); MemoryStream ms = new MemoryStream(ByteArray); Dfs dfs = new Dfs(Dfs.DFSType.DFSU, true); dfs.StreamToDfs(ms); csspFile.DataStartDate = dfs.DataStartDate; csspFile.DataEndDate = dfs.DataStartDate.AddSeconds(dfs.TimeSteps * dfs.XValueList.Count); csspFile.TimeStepsInSecond = dfs.TimeSteps; string ParamNameTxt = ""; string ParamUnitTxt = ""; foreach (Dfs.Parameter p in dfs.ParameterList) { ParamUnitTxt += string.Format("[{0}]-", p.UnitCode.ToString()); ParamNameTxt += string.Format("[{0}]-", p.Description); } csspFile.ParameterNames = ParamNameTxt.Substring(0, ParamNameTxt.Length - 1); csspFile.ParameterUnits = ParamUnitTxt.Substring(0, ParamUnitTxt.Length - 1); } else if (fi.Extension.ToLower() == ".log") { csspFile.Purpose = PurposeType.MikeResult.ToString(); } else { richTextBoxStatus.AppendText("File extension should only be .dfsu and .log. It is [" + fi.Extension + "] ...\r\n"); return(false); } try { vpse.SaveChanges(SaveOptions.AcceptAllChangesAfterSave); richTextBoxStatus.AppendText("CSSPFile saved in DB ...\r\n"); Application.DoEvents(); } catch (Exception ex) { MessageBox.Show("Could not store file [" + FileName + "] in DB\r\n" + ex.Message + "\r\n"); richTextBoxStatus.AppendText("Could not store file [" + FileName + "] in DB\r\n" + ex.Message + "\r\n"); Application.DoEvents(); lblStatusWorking.Text = "Error ... "; lblStatusUpdate.Text = "See details below ... "; return(false); } int msID = CurrentMikeScenario.MikeScenarioID; CurrentMikeScenario = (from ms in vpse.MikeScenarios where ms.MikeScenarioID == msID select ms).FirstOrDefault <MikeScenario>(); if (CurrentMikeScenario == null) { richTextBoxStatus.AppendText("Could not find MikeScenario with MikeScenarioID = [" + msID + "] ...\r\n"); lblStatusWorking.Text = "Error ... "; lblStatusUpdate.Text = "See details below ... "; return(false); } MikeScenarioFile NewMikeScenarioFile = new MikeScenarioFile(); NewMikeScenarioFile.MikeScenario = CurrentMikeScenario; NewMikeScenarioFile.CSSPFile = csspFile; NewMikeScenarioFile.CSSPParentFile = csspFile; try { richTextBoxStatus.AppendText("Linking MikeScenario to CSSPFile using MikeScenarioFile ...\r\n"); Application.DoEvents(); vpse.SaveChanges(SaveOptions.AcceptAllChangesAfterSave); richTextBoxStatus.AppendText("Linked MikeScenario to CSSPFile using MikeScenarioFile ...\r\n"); } catch (Exception ex) { MessageBox.Show("Could not link MikeScenario to CSSPFile\r\n" + ex.Message + "\r\n"); richTextBoxStatus.AppendText("Could not link MikeScenario to CSSPFile\r\n" + ex.Message + "\r\n"); Application.DoEvents(); lblStatusWorking.Text = "Error ... "; lblStatusUpdate.Text = "See details below ... "; return(false); } return(true); }