public void MikeScenario_Controller_Put_Test()
        {
            foreach (LanguageEnum LanguageRequest in AllowableLanguages)
            {
                foreach (int ContactID in new List <int>()
                {
                    AdminContactID
                })                                                             //, TestEmailValidatedContactID, TestEmailNotValidatedContactID })
                {
                    MikeScenarioController mikeScenarioController = new MikeScenarioController(DatabaseTypeEnum.SqlServerTestDB);
                    Assert.IsNotNull(mikeScenarioController);
                    Assert.AreEqual(DatabaseTypeEnum.SqlServerTestDB, mikeScenarioController.DatabaseType);

                    MikeScenario mikeScenarioLast = new MikeScenario();
                    using (CSSPDBContext db = new CSSPDBContext(DatabaseType))
                    {
                        Query query = new Query();
                        query.Language = LanguageRequest;

                        MikeScenarioService mikeScenarioService = new MikeScenarioService(query, db, ContactID);
                        mikeScenarioLast = (from c in db.MikeScenarios select c).FirstOrDefault();
                    }

                    // ok with MikeScenario info
                    IHttpActionResult jsonRet = mikeScenarioController.GetMikeScenarioWithID(mikeScenarioLast.MikeScenarioID);
                    Assert.IsNotNull(jsonRet);

                    OkNegotiatedContentResult <MikeScenario> Ret = jsonRet as OkNegotiatedContentResult <MikeScenario>;
                    MikeScenario mikeScenarioRet = Ret.Content;
                    Assert.AreEqual(mikeScenarioLast.MikeScenarioID, mikeScenarioRet.MikeScenarioID);

                    BadRequestErrorMessageResult badRequest = jsonRet as BadRequestErrorMessageResult;
                    Assert.IsNull(badRequest);

                    // Put to return success
                    IHttpActionResult jsonRet2 = mikeScenarioController.Put(mikeScenarioRet, LanguageRequest.ToString());
                    Assert.IsNotNull(jsonRet2);

                    OkNegotiatedContentResult <MikeScenario> mikeScenarioRet2 = jsonRet2 as OkNegotiatedContentResult <MikeScenario>;
                    Assert.IsNotNull(mikeScenarioRet2);

                    BadRequestErrorMessageResult badRequest2 = jsonRet2 as BadRequestErrorMessageResult;
                    Assert.IsNull(badRequest2);

                    // Put to return CSSPError because MikeScenarioID of 0 does not exist
                    mikeScenarioRet.MikeScenarioID = 0;
                    IHttpActionResult jsonRet3 = mikeScenarioController.Put(mikeScenarioRet, LanguageRequest.ToString());
                    Assert.IsNotNull(jsonRet3);

                    OkNegotiatedContentResult <MikeScenario> mikeScenarioRet3 = jsonRet3 as OkNegotiatedContentResult <MikeScenario>;
                    Assert.IsNull(mikeScenarioRet3);

                    BadRequestErrorMessageResult badRequest3 = jsonRet3 as BadRequestErrorMessageResult;
                    Assert.IsNotNull(badRequest3);
                }
            }
        }
Ejemplo n.º 2
0
 // Events
 private void AutoRunMike_Load(object sender, EventArgs e)
 {
     richTextBoxStatus.Clear();
     butStart.Enabled = true;
     butPause.Enabled = false;
     CreateNewM21FMWithEvents();
     CurrentMikeScenario   = new MikeScenario();
     m21fmLog              = new M21fmLog();
     lblStatusWorking.Text = "Paused ... ";
     lblStatusUpdate.Text  = "Press start ... ";
     Start();
     CheckForMoreReadyToRun();
     //DesktopChildrenWindowsList = new List<WndHandleAndTitle>();
 }
        public IHttpActionResult GetMikeScenarioWithID([FromUri] int MikeScenarioID, [FromUri] string lang = "en", [FromUri] string extra = "")
        {
            using (CSSPDBContext db = new CSSPDBContext(DatabaseType))
            {
                MikeScenarioService mikeScenarioService = new MikeScenarioService(new Query()
                {
                    Language = (lang == "fr" ? LanguageEnum.fr : LanguageEnum.en)
                }, db, ContactID);

                mikeScenarioService.Query = mikeScenarioService.FillQuery(typeof(MikeScenario), lang, 0, 1, "", "", extra);

                if (mikeScenarioService.Query.Extra == "A")
                {
                    MikeScenarioExtraA mikeScenarioExtraA = new MikeScenarioExtraA();
                    mikeScenarioExtraA = mikeScenarioService.GetMikeScenarioExtraAWithMikeScenarioID(MikeScenarioID);

                    if (mikeScenarioExtraA == null)
                    {
                        return(NotFound());
                    }

                    return(Ok(mikeScenarioExtraA));
                }
                else if (mikeScenarioService.Query.Extra == "B")
                {
                    MikeScenarioExtraB mikeScenarioExtraB = new MikeScenarioExtraB();
                    mikeScenarioExtraB = mikeScenarioService.GetMikeScenarioExtraBWithMikeScenarioID(MikeScenarioID);

                    if (mikeScenarioExtraB == null)
                    {
                        return(NotFound());
                    }

                    return(Ok(mikeScenarioExtraB));
                }
                else
                {
                    MikeScenario mikeScenario = new MikeScenario();
                    mikeScenario = mikeScenarioService.GetMikeScenarioWithMikeScenarioID(MikeScenarioID);

                    if (mikeScenario == null)
                    {
                        return(NotFound());
                    }

                    return(Ok(mikeScenario));
                }
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Tries to execute the CSSPDB transaction (add/delete/update) on an [MikeScenario](CSSPModels.MikeScenario.html) item
        /// </summary>
        /// <param name="mikeScenario">Is the MikeScenario item the client want to add to CSSPDB. What's important here is the MikeScenarioID</param>
        /// <returns>true if MikeScenario item was updated to CSSPDB, false if an error happened during the DB requested transtaction</returns>
        private bool TryToSave(MikeScenario mikeScenario)
        {
            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateException ex)
            {
                mikeScenario.ValidationResults = new List <ValidationResult>()
                {
                    new ValidationResult(ex.Message + (ex.InnerException != null ? " Inner: " + ex.InnerException.Message : ""))
                }.AsEnumerable();
                return(false);
            }

            return(true);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Updates an [MikeScenario](CSSPModels.MikeScenario.html) item in CSSPDB
        /// </summary>
        /// <param name="mikeScenario">Is the MikeScenario item the client want to add to CSSPDB. What's important here is the MikeScenarioID</param>
        /// <returns>true if MikeScenario item was updated to CSSPDB, false if an error happened during the DB requested transtaction</returns>
        public bool Update(MikeScenario mikeScenario)
        {
            mikeScenario.ValidationResults = Validate(new ValidationContext(mikeScenario), ActionDBTypeEnum.Update);
            if (mikeScenario.ValidationResults.Count() > 0)
            {
                return(false);
            }

            db.MikeScenarios.Update(mikeScenario);

            if (!TryToSave(mikeScenario))
            {
                return(false);
            }

            return(true);
        }
        public void MikeScenario_Controller_GetMikeScenarioWithID_Test()
        {
            foreach (LanguageEnum LanguageRequest in AllowableLanguages)
            {
                foreach (int ContactID in new List <int>()
                {
                    AdminContactID
                })                                                             //, TestEmailValidatedContactID, TestEmailNotValidatedContactID })
                {
                    MikeScenarioController mikeScenarioController = new MikeScenarioController(DatabaseTypeEnum.SqlServerTestDB);
                    Assert.IsNotNull(mikeScenarioController);
                    Assert.AreEqual(DatabaseTypeEnum.SqlServerTestDB, mikeScenarioController.DatabaseType);

                    MikeScenario mikeScenarioFirst = new MikeScenario();
                    using (CSSPDBContext db = new CSSPDBContext(DatabaseType))
                    {
                        MikeScenarioService mikeScenarioService = new MikeScenarioService(new Query(), db, ContactID);
                        mikeScenarioFirst = (from c in db.MikeScenarios select c).FirstOrDefault();
                    }

                    // ok with MikeScenario info
                    IHttpActionResult jsonRet = mikeScenarioController.GetMikeScenarioWithID(mikeScenarioFirst.MikeScenarioID);
                    Assert.IsNotNull(jsonRet);

                    OkNegotiatedContentResult <MikeScenario> Ret = jsonRet as OkNegotiatedContentResult <MikeScenario>;
                    MikeScenario mikeScenarioRet = Ret.Content;
                    Assert.AreEqual(mikeScenarioFirst.MikeScenarioID, mikeScenarioRet.MikeScenarioID);

                    BadRequestErrorMessageResult badRequest = jsonRet as BadRequestErrorMessageResult;
                    Assert.IsNull(badRequest);

                    // Not Found
                    IHttpActionResult jsonRet2 = mikeScenarioController.GetMikeScenarioWithID(0);
                    Assert.IsNotNull(jsonRet2);

                    OkNegotiatedContentResult <MikeScenario> mikeScenarioRet2 = jsonRet2 as OkNegotiatedContentResult <MikeScenario>;
                    Assert.IsNull(mikeScenarioRet2);

                    NotFoundResult notFoundRequest = jsonRet2 as NotFoundResult;
                    Assert.IsNotNull(notFoundRequest);
                }
            }
        }
Ejemplo n.º 7
0
 private void dataGridViewScenarios_SelectionChanged(object sender, EventArgs e)
 {
     if (dataGridViewScenarios.SelectedRows.Count > 0)
     {
         MikeScenario mikeScenario = (MikeScenario)dataGridViewScenarios.SelectedRows[0].DataBoundItem;
         if (dataGridViewScenarios.SelectedRows.Count == 1)
         {
             // nothing yet
         }
         else
         {
             // nothing yet
         }
     }
     else
     {
         // nothing yet
     }
 }
        public IHttpActionResult Delete([FromBody] MikeScenario mikeScenario, [FromUri] string lang = "en")
        {
            using (CSSPDBContext db = new CSSPDBContext(DatabaseType))
            {
                MikeScenarioService mikeScenarioService = new MikeScenarioService(new Query()
                {
                    Language = (lang == "fr" ? LanguageEnum.fr : LanguageEnum.en)
                }, db, ContactID);

                if (!mikeScenarioService.Delete(mikeScenario))
                {
                    return(BadRequest(String.Join("|||", mikeScenario.ValidationResults)));
                }
                else
                {
                    mikeScenario.ValidationResults = null;
                    return(Ok(mikeScenario));
                }
            }
        }
        public void MikeScenario_Controller_Post_Test()
        {
            foreach (LanguageEnum LanguageRequest in AllowableLanguages)
            {
                foreach (int ContactID in new List <int>()
                {
                    AdminContactID
                })                                                             //, TestEmailValidatedContactID, TestEmailNotValidatedContactID })
                {
                    MikeScenarioController mikeScenarioController = new MikeScenarioController(DatabaseTypeEnum.SqlServerTestDB);
                    Assert.IsNotNull(mikeScenarioController);
                    Assert.AreEqual(DatabaseTypeEnum.SqlServerTestDB, mikeScenarioController.DatabaseType);

                    MikeScenario mikeScenarioLast = new MikeScenario();
                    using (CSSPDBContext db = new CSSPDBContext(DatabaseType))
                    {
                        Query query = new Query();
                        query.Language = LanguageRequest;
                        query.Asc      = "";
                        query.Desc     = "";

                        MikeScenarioService mikeScenarioService = new MikeScenarioService(query, db, ContactID);
                        mikeScenarioLast = (from c in db.MikeScenarios select c).FirstOrDefault();
                    }

                    // ok with MikeScenario info
                    IHttpActionResult jsonRet = mikeScenarioController.GetMikeScenarioWithID(mikeScenarioLast.MikeScenarioID);
                    Assert.IsNotNull(jsonRet);

                    OkNegotiatedContentResult <MikeScenario> Ret = jsonRet as OkNegotiatedContentResult <MikeScenario>;
                    MikeScenario mikeScenarioRet = Ret.Content;
                    Assert.AreEqual(mikeScenarioLast.MikeScenarioID, mikeScenarioRet.MikeScenarioID);

                    BadRequestErrorMessageResult badRequest = jsonRet as BadRequestErrorMessageResult;
                    Assert.IsNull(badRequest);

                    // Post to return CSSPError because MikeScenarioID exist
                    IHttpActionResult jsonRet2 = mikeScenarioController.Post(mikeScenarioRet, LanguageRequest.ToString());
                    Assert.IsNotNull(jsonRet2);

                    OkNegotiatedContentResult <MikeScenario> mikeScenarioRet2 = jsonRet2 as OkNegotiatedContentResult <MikeScenario>;
                    Assert.IsNull(mikeScenarioRet2);

                    BadRequestErrorMessageResult badRequest2 = jsonRet2 as BadRequestErrorMessageResult;
                    Assert.IsNotNull(badRequest2);

                    // Post to return newly added MikeScenario
                    mikeScenarioRet.MikeScenarioID            = 0;
                    mikeScenarioController.Request            = new System.Net.Http.HttpRequestMessage();
                    mikeScenarioController.Request.RequestUri = new System.Uri("http://localhost:5000/api/mikeScenario");
                    IHttpActionResult jsonRet3 = mikeScenarioController.Post(mikeScenarioRet, LanguageRequest.ToString());
                    Assert.IsNotNull(jsonRet3);

                    CreatedNegotiatedContentResult <MikeScenario> mikeScenarioRet3 = jsonRet3 as CreatedNegotiatedContentResult <MikeScenario>;
                    Assert.IsNotNull(mikeScenarioRet3);

                    BadRequestErrorMessageResult badRequest3 = jsonRet3 as BadRequestErrorMessageResult;
                    Assert.IsNull(badRequest3);

                    IHttpActionResult jsonRet4 = mikeScenarioController.Delete(mikeScenarioRet, LanguageRequest.ToString());
                    Assert.IsNotNull(jsonRet4);

                    OkNegotiatedContentResult <MikeScenario> mikeScenarioRet4 = jsonRet4 as OkNegotiatedContentResult <MikeScenario>;
                    Assert.IsNotNull(mikeScenarioRet4);

                    BadRequestErrorMessageResult badRequest4 = jsonRet4 as BadRequestErrorMessageResult;
                    Assert.IsNull(badRequest4);
                }
            }
        }
 public MikeScenarioTest()
 {
     mikeScenario       = new MikeScenario();
     mikeScenarioExtraA = new MikeScenarioExtraA();
     mikeScenarioExtraB = new MikeScenarioExtraB();
 }
Ejemplo n.º 11
0
        private bool DownloadInputFiles(MikeScenario mikeScenario)
        {
            richTextBoxStatus.AppendText("Trying to download input files from DB for Scenario [" + mikeScenario.MikeScenarioID + "] ...\r\n");
            Application.DoEvents();

            List <CSSPFile> csspFileList = (from cf in vpse.CSSPFiles
                                            from msf in vpse.MikeScenarioFiles
                                            where cf.CSSPFileID == msf.CSSPFile.CSSPFileID &&
                                            msf.MikeScenarioID == mikeScenario.MikeScenarioID &&
                                            (cf.Purpose == "Input" || cf.Purpose == "InputPol")
                                            select cf).ToList <CSSPFile>();

            foreach (CSSPFile cf in csspFileList)
            {
                FileInfo fi = new FileInfo(cf.FileOriginalPath + cf.FileName);

                if (fi.Extension == ".m21fm")
                {
                    CurrentFile         = cf.FileOriginalPath + cf.FileName;
                    lblCurrentFile.Text = CurrentFile;
                }

                DirectoryInfo di = new DirectoryInfo(cf.FileOriginalPath);
                if (!di.Exists)
                {
                    richTextBoxStatus.AppendText("Required path does not exist. Creating path [" + cf.FileOriginalPath + "] ...\r\n");

                    di.Create();
                }

                richTextBoxStatus.AppendText("Doing file [" + cf.FileOriginalPath + cf.FileName + "] ...\r\n");

                if (fi.Exists)
                {
                    richTextBoxStatus.AppendText("File already exist ...\r\n");
                    // remove existing file before downloading new file from DB
                    try
                    {
                        richTextBoxStatus.AppendText("Trying to remove file ...\r\n");
                        fi.Delete();
                        richTextBoxStatus.AppendText("File removed ...\r\n");
                    }
                    catch (Exception ex)
                    {
                        richTextBoxStatus.AppendText("Error while trying to remove file ...\r\n");
                        richTextBoxStatus.AppendText("Error message [" + ex.Message + "] ...\r\n");
                        lblStatusWorking.Text = "Error ... ";
                        lblStatusUpdate.Text  = "See details below ... ";
                        return(false);
                    }
                }

                try
                {
                    richTextBoxStatus.AppendText("Downloading file from DB ...\r\n");

                    FileStream   fs     = fi.Create();
                    BinaryWriter writer = new BinaryWriter(fs);
                    writer.Write(cf.FileContent);
                    writer.Close();
                    fs.Close();

                    richTextBoxStatus.AppendText("File downloaded ...\r\n\r\n");
                }
                catch (Exception ex)
                {
                    richTextBoxStatus.AppendText("Error while trying to download file from DB ...\r\n");
                    richTextBoxStatus.AppendText("Error message [" + ex.Message + "] ...\r\n");
                    lblStatusWorking.Text = "Error ... ";
                    lblStatusUpdate.Text  = "See details below ... ";
                    return(false);
                }
            }
            return(true);
        }
Ejemplo n.º 12
0
        private bool GetAllResultFilesToUpload(string m21fmFileName, List <string> FileNameList, MikeScenario NewMikeScenario)
        {
            try
            {
                AddFileToFileNameList(m21fmFileName, m21fm.femEngineHD.hydrodynamic_module.structures.turbines.output_file_name, FileNameList);
                if (m21fm.femEngineHD.hydrodynamic_module.outputs != null && m21fm.femEngineHD.hydrodynamic_module.outputs.output != null)
                {
                    foreach (KeyValuePair <string, M21fm.FemEngineHD.HYDRODYNAMIC_MODULE.OUTPUTS.OUTPUT> kvp in m21fm.femEngineHD.hydrodynamic_module.outputs.output)
                    {
                        FileInfo fi = new FileInfo(m21fmFileName.Substring(0, m21fmFileName.LastIndexOf("\\") + 1)
                                                   + m21fm.system.ResultRootFolder.Substring(1, m21fm.system.ResultRootFolder.Length - 2)
                                                   + m21fmFileName.Substring(m21fmFileName.LastIndexOf("\\"))
                                                   + " - Result Files\\");
                        AddFileToFileNameList(fi.FullName, kvp.Value.file_name, FileNameList);
                        AddFileToFileNameList(fi.FullName, kvp.Value.input_file_name, FileNameList);
                    }
                }
                if (m21fm.femEngineHD.transport_module.outputs != null && m21fm.femEngineHD.transport_module.outputs.output != null)
                {
                    foreach (KeyValuePair <string, M21fm.FemEngineHD.TRANSPORT_MODULE.OUTPUTS.OUTPUT> kvp in m21fm.femEngineHD.transport_module.outputs.output)
                    {
                        FileInfo fi = new FileInfo(m21fmFileName.Substring(0, m21fmFileName.LastIndexOf("\\") + 1)
                                                   + m21fm.system.ResultRootFolder.Substring(1, m21fm.system.ResultRootFolder.Length - 2)
                                                   + m21fmFileName.Substring(m21fmFileName.LastIndexOf("\\"))
                                                   + " - Result Files\\");
                        AddFileToFileNameList(fi.FullName, kvp.Value.file_name, FileNameList);
                        AddFileToFileNameList(fi.FullName, kvp.Value.input_file_name, FileNameList);
                    }
                }
            }
            catch (Exception ex)
            {
                richTextBoxStatus.AppendText("Error while trying to get results file names from [" + m21fmFileName + "] ...\r\n");
                richTextBoxStatus.AppendText("Error message [" + ex.Message + "] ...\r\n");
                lblStatusWorking.Text = "Error ... ";
                lblStatusUpdate.Text  = "See details below ... ";
                return(false);
            }

            return(true);
        }
Ejemplo n.º 13
0
        private void processMikeExited()
        {
            richTextBoxStatus.AppendText(string.Format("processMIKE ended at [{0:yyyy-MM-dd hh:mm:ss tt}] ...\r\n", DateTime.Now));
            timerMzLaunchStillRunning.Enabled = false;

            lblStatusWorking.Text = "Process ended ...";
            lblStatusUpdate.Text  = string.Format("at [{0:yyyy-MM-dd hh:mm:ss tt}]", DateTime.Now);

            if (!CopyDfsuAndLogToDB())
            {
                lblStatusWorking.Text = "Error ...";
                lblStatusUpdate.Text  = "";
                return;
            }


            // should be changing MikeScenario status
            MikeScenario mikeScenarioToChange = (from ms in vpse.MikeScenarios
                                                 where ms.MikeScenarioID == CurrentMikeScenario.MikeScenarioID
                                                 select ms).FirstOrDefault <MikeScenario>();

            if (mikeScenarioToChange == null)
            {
                richTextBoxStatus.AppendText("Could not find MikeScenario to update. Looking for MikeScenarioID = [" + CurrentMikeScenario.MikeScenarioID + "] ... \r\n");
                lblStatusWorking.Text = "Error ...";
                lblStatusUpdate.Text  = "";
                return;
            }

            // should Check if the log file shows the normal completion line as the last line
            string       LogFileName = CurrentFile.Substring(0, CurrentFile.LastIndexOf(".")) + ".log";
            MemoryStream mems        = new MemoryStream();

            mems = fileToMemoryStream(LogFileName);

            richTextBoxStatus.AppendText("Parsing the log file [" + LogFileName + "]\r\n");
            if (!m21fmLog.StreamToM21fmLog(mems))
            {
                richTextBoxStatus.AppendText("Error while parsing the log file\r\n");
                mikeScenarioToChange.ScenarioStatus = ScenarioStatusType.Error.ToString();
            }

            if (m21fmLog.CompletionTxt == "Run cancelled by user")
            {
                richTextBoxStatus.AppendText("Run cancelled by user\r\n");
                mikeScenarioToChange.ScenarioStatus = ScenarioStatusType.Canceled.ToString();
            }

            if (m21fmLog.CompletionTxt == "Abnormal run completion")
            {
                richTextBoxStatus.AppendText("Abnormal run completion\r\n");
                mikeScenarioToChange.ScenarioStatus = ScenarioStatusType.Error.ToString();
            }

            if (m21fmLog.CompletionTxt == "Normal run completion")
            {
                richTextBoxStatus.AppendText("Normal run completion\r\n");
                mikeScenarioToChange.ScenarioStatus = ScenarioStatusType.Completed.ToString();
            }

            mikeScenarioToChange.ScenarioStartExecutionDateAndTime = m21fmLog.StartExecutionDate;
            mikeScenarioToChange.ScenarioExecutionTimeInMinutes    = m21fmLog.TotalElapseTimeInSeconds / 60;

            try
            {
                richTextBoxStatus.AppendText("Updating mikeScenario ScenarioStatus to [" + mikeScenarioToChange.ScenarioStatus + "] ... \r\n");
                vpse.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
                richTextBoxStatus.AppendText("Updated mikeScenario ScenarioStatus to [" + mikeScenarioToChange.ScenarioStatus + "] ... \r\n");
            }
            catch (Exception ex)
            {
                richTextBoxStatus.AppendText("Error while updating mikeScenario ScenarioStatus to [" + mikeScenarioToChange.ScenarioStatus + "] ... \r\n");
                richTextBoxStatus.AppendText("Error message [" + ex.Message + "] ... \r\n");
                lblStatusWorking.Text = "Error ...";
                lblStatusUpdate.Text  = ex.Message;
                return;
            }

            lblStatusWorking.Text = "Done ... ";
            lblStatusUpdate.Text  = " ";

            FileInfo fi = new FileInfo(CurrentFile);

            string AutoRunMikeLogFileName = string.Format("[{0}] AutoRunMike.log", mikeScenarioToChange.MikeScenarioID);
            string FilePath = fi.DirectoryName + "\\";

            CSSPFile csspFileExist = (from cf in vpse.CSSPFiles
                                      from msf in vpse.MikeScenarioFiles
                                      where cf.CSSPFileID == msf.CSSPFile.CSSPFileID &&
                                      cf.FileType == ".log" &&
                                      cf.FileOriginalPath == fi.DirectoryName + "\\" &&
                                      cf.FileName == AutoRunMikeLogFileName &&
                                      cf.Purpose == "Other"
                                      select cf).FirstOrDefault <CSSPFile>();

            if (csspFileExist == null)
            {
                CSSPFile csspFile = new CSSPFile();
                csspFile.CSSPGuid         = Guid.NewGuid();
                csspFile.FileName         = AutoRunMikeLogFileName;
                csspFile.FileOriginalPath = FilePath;
                csspFile.FileSize         = richTextBoxStatus.Text.Length;
                csspFile.FileDescription  = "";
                csspFile.FileCreatedDate  = DateTime.Now;
                csspFile.FileType         = ".log";
                csspFile.FileContent      = Encoding.ASCII.GetBytes(richTextBoxStatus.Text);
                csspFile.Purpose          = PurposeType.Other.ToString();

                try
                {
                    richTextBoxStatus.AppendText("Adding log file [" + AutoRunMikeLogFileName + "] of AutoRunMike to [" + mikeScenarioToChange.MikeScenarioID + "] ... \r\n");
                    vpse.AddToCSSPFiles(csspFile);
                    vpse.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
                    richTextBoxStatus.AppendText("Added log file ... \r\n");
                }
                catch (Exception ex)
                {
                    richTextBoxStatus.AppendText("Error while adding log file ... \r\n");
                    richTextBoxStatus.AppendText("Error message [" + ex.Message + "] ... \r\n");
                    lblStatusWorking.Text = "Error ...";
                    lblStatusUpdate.Text  = ex.Message;
                    return;
                }

                // linking the file to the scenario
                MikeScenarioFile mikeScenarioFile = new MikeScenarioFile();
                mikeScenarioFile.MikeScenario   = mikeScenarioToChange;
                mikeScenarioFile.CSSPFile       = csspFile;
                mikeScenarioFile.CSSPParentFile = csspFile;

                try
                {
                    richTextBoxStatus.AppendText("Linking log file [" + AutoRunMikeLogFileName + "] of AutoRunMike to [" + mikeScenarioToChange.MikeScenarioID + "] ... \r\n");
                    vpse.AddToMikeScenarioFiles(mikeScenarioFile);
                    vpse.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
                    richTextBoxStatus.AppendText("Linked log file ... \r\n");
                }
                catch (Exception ex)
                {
                    richTextBoxStatus.AppendText("Error while linking file to scenario ... \r\n");
                    richTextBoxStatus.AppendText("Error message [" + ex.Message + "] ... \r\n");
                    lblStatusWorking.Text = "Error ...";
                    lblStatusUpdate.Text  = ex.Message;
                    return;
                }
            }
            else
            {
                richTextBoxStatus.AppendText("Adding log file [" + AutoRunMikeLogFileName + "] of AutoRunMike to [" + mikeScenarioToChange.MikeScenarioID + "] ... \r\n");

                csspFileExist.FileSize        = richTextBoxStatus.Text.Length;
                csspFileExist.FileCreatedDate = DateTime.Now;
                csspFileExist.FileContent     = Encoding.ASCII.GetBytes(richTextBoxStatus.Text);

                try
                {
                    vpse.SaveChanges();
                    richTextBoxStatus.AppendText("Added log file ... \r\n"); // this will not be shown in the log file if successful
                }
                catch (Exception ex)
                {
                    richTextBoxStatus.AppendText("Error while adding log file ... \r\n");
                    richTextBoxStatus.AppendText("Error message [" + ex.Message + "] ... \r\n");
                    lblStatusWorking.Text = "Error ...";
                    lblStatusUpdate.Text  = ex.Message;
                    return;
                }
            }

            richTextBoxStatus.Clear();

            timerAutoRunMike.Enabled = true;
            CheckForMoreReadyToRun();
        }
Ejemplo n.º 14
0
        private bool RunScenario(MikeScenario mikeScenario)
        {
            lblStatusUpdate.Text = "Downloading ... " + mikeScenario.ScenarioName;

            if (!DownloadInputFiles(mikeScenario))
            {
                return(false);
            }

            richTextBoxStatus.AppendText("Preparing processMIKE to be run ...\r\n");

            ProcessStartInfo pInfo = new ProcessStartInfo();

            pInfo.Arguments = " \"" + CurrentFile + "\" " + "-x";
            if (radioButtonRunMzLaunchHidden.Checked)
            {
                pInfo.WindowStyle = ProcessWindowStyle.Hidden;
            }
            else if (radioButtonRunMzLaunchNormal.Checked)
            {
                pInfo.WindowStyle = ProcessWindowStyle.Normal;
            }
            else // default to Minimized
            {
                pInfo.WindowStyle = ProcessWindowStyle.Minimized;
            }
            pInfo.UseShellExecute = true;
            processMike.StartInfo = pInfo;
            bool ProcessWorking = false;

            richTextBoxStatus.AppendText("processMIKE will run with [" + CurrentFile + "] ...\r\n");
            try
            {
                pInfo.FileName = @"C:\Program Files (x86)\DHI\2011\bin\MzLaunch.exe";
                richTextBoxStatus.AppendText("Trying to run file [" + pInfo.FileName + "] ...\r\n");
                processMike.Start();
                ProcessWorking = true;
                richTextBoxStatus.AppendText("Process running ...\r\n");
            }
            catch (Exception ex)
            {
                richTextBoxStatus.AppendText("Process could not run. File not found ...\r\n");
                richTextBoxStatus.AppendText("Error message [" + ex.Message + "] ...\r\n");
                // don't return here we need to try another file name
            }
            if (!ProcessWorking)
            {
                try
                {
                    pInfo.FileName = @"C:\Program Files\DHI\2011\bin\MzLaunch.exe";
                    richTextBoxStatus.AppendText("Trying to run file [" + pInfo.FileName + "] ...\r\n");
                    processMike.Start();
                    ProcessWorking = true;
                    richTextBoxStatus.AppendText("Process running ...\r\n");
                }
                catch (Exception ex)
                {
                    richTextBoxStatus.AppendText("Process could not run. File not found ...\r\n");
                    richTextBoxStatus.AppendText("Error message [" + ex.Message + "] ...\r\n");
                    lblStatusWorking.Text = "Error ... ";
                    lblStatusUpdate.Text  = "See details below ... ";
                    return(false);
                }
            }

            processMike.WaitForInputIdle(2000);

            lblStatusWorking.Text = "Working ... ";
            lblStatusUpdate.Text  = "Doing ... " + CurrentFile;

            richTextBoxStatus.AppendText(string.Format("processMIKE started at [{0:yyyy-MM-dd HH:mm:ss tt}] ...\r\n", DateTime.Now));

            //        MegaDoEvents();
            //        MegaDoEvents();
            //        MegaDoEvents();

            //        IntPtr hWndDesktop = APIFunc.GetDesktopWindow();
            //        DesktopChildrenWindowsList.Clear();
            //        FillDesktopWindowsChildrenList(true);

            //        string ShortFileName = CurrentFile.Substring(CurrentFile.LastIndexOf("\\") + 1);
            //        WndHandleAndTitle wht = DesktopChildrenWindowsList.Where(u => u.Title == "MzLaunch - [" + ShortFileName + "]").FirstOrDefault();
            //        while (wht != null)
            //        {
            //            IntPtr hWndParentOfTimeRemaining = af.APIGetWindow(
            //af.APIGetWindow(
            //af.APIGetWindow(wht.Handle, GW_CHILD),
            //GW_CHILD),
            //GW_CHILD);
            //            DesktopChildrenWindowsList.Clear();
            //            List<WndHandleAndTitle> whtList = af.GetChildrenWindowsHandleAndTitle(hWndParentOfTimeRemaining);
            //}

            return(true);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// Validate function for all MikeScenarioService commands
        /// </summary>
        /// <param name="validationContext">System.ComponentModel.DataAnnotations.ValidationContext (Describes the context in which a validation check is performed.)</param>
        /// <param name="actionDBType">[ActionDBTypeEnum] (CSSPEnums.ActionDBTypeEnum.html) action type to validate</param>
        /// <returns>IEnumerable of ValidationResult (Where ValidationResult is a container for the results of a validation request.)</returns>
        private IEnumerable <ValidationResult> Validate(ValidationContext validationContext, ActionDBTypeEnum actionDBType)
        {
            string       retStr       = "";
            Enums        enums        = new Enums(LanguageRequest);
            MikeScenario mikeScenario = validationContext.ObjectInstance as MikeScenario;

            mikeScenario.HasErrors = false;

            if (actionDBType == ActionDBTypeEnum.Update || actionDBType == ActionDBTypeEnum.Delete)
            {
                if (mikeScenario.MikeScenarioID == 0)
                {
                    mikeScenario.HasErrors = true;
                    yield return(new ValidationResult(string.Format(CSSPServicesRes._IsRequired, "MikeScenarioID"), new[] { "MikeScenarioID" }));
                }

                if (!(from c in db.MikeScenarios select c).Where(c => c.MikeScenarioID == mikeScenario.MikeScenarioID).Any())
                {
                    mikeScenario.HasErrors = true;
                    yield return(new ValidationResult(string.Format(CSSPServicesRes.CouldNotFind_With_Equal_, "MikeScenario", "MikeScenarioID", mikeScenario.MikeScenarioID.ToString()), new[] { "MikeScenarioID" }));
                }
            }

            TVItem TVItemMikeScenarioTVItemID = (from c in db.TVItems where c.TVItemID == mikeScenario.MikeScenarioTVItemID select c).FirstOrDefault();

            if (TVItemMikeScenarioTVItemID == null)
            {
                mikeScenario.HasErrors = true;
                yield return(new ValidationResult(string.Format(CSSPServicesRes.CouldNotFind_With_Equal_, "TVItem", "MikeScenarioTVItemID", mikeScenario.MikeScenarioTVItemID.ToString()), new[] { "MikeScenarioTVItemID" }));
            }
            else
            {
                List <TVTypeEnum> AllowableTVTypes = new List <TVTypeEnum>()
                {
                    TVTypeEnum.MikeScenario,
                };
                if (!AllowableTVTypes.Contains(TVItemMikeScenarioTVItemID.TVType))
                {
                    mikeScenario.HasErrors = true;
                    yield return(new ValidationResult(string.Format(CSSPServicesRes._IsNotOfType_, "MikeScenarioTVItemID", "MikeScenario"), new[] { "MikeScenarioTVItemID" }));
                }
            }

            if (mikeScenario.ParentMikeScenarioID != null)
            {
                TVItem TVItemParentMikeScenarioID = (from c in db.TVItems where c.TVItemID == mikeScenario.ParentMikeScenarioID select c).FirstOrDefault();

                if (TVItemParentMikeScenarioID == null)
                {
                    mikeScenario.HasErrors = true;
                    yield return(new ValidationResult(string.Format(CSSPServicesRes.CouldNotFind_With_Equal_, "TVItem", "ParentMikeScenarioID", (mikeScenario.ParentMikeScenarioID == null ? "" : mikeScenario.ParentMikeScenarioID.ToString())), new[] { "ParentMikeScenarioID" }));
                }
                else
                {
                    List <TVTypeEnum> AllowableTVTypes = new List <TVTypeEnum>()
                    {
                        TVTypeEnum.MikeScenario,
                    };
                    if (!AllowableTVTypes.Contains(TVItemParentMikeScenarioID.TVType))
                    {
                        mikeScenario.HasErrors = true;
                        yield return(new ValidationResult(string.Format(CSSPServicesRes._IsNotOfType_, "ParentMikeScenarioID", "MikeScenario"), new[] { "ParentMikeScenarioID" }));
                    }
                }
            }

            retStr = enums.EnumTypeOK(typeof(ScenarioStatusEnum), (int?)mikeScenario.ScenarioStatus);
            if (!string.IsNullOrWhiteSpace(retStr))
            {
                mikeScenario.HasErrors = true;
                yield return(new ValidationResult(string.Format(CSSPServicesRes._IsRequired, "ScenarioStatus"), new[] { "ScenarioStatus" }));
            }

            //ErrorInfo has no StringLength Attribute

            if (mikeScenario.MikeScenarioStartDateTime_Local.Year == 1)
            {
                mikeScenario.HasErrors = true;
                yield return(new ValidationResult(string.Format(CSSPServicesRes._IsRequired, "MikeScenarioStartDateTime_Local"), new[] { "MikeScenarioStartDateTime_Local" }));
            }
            else
            {
                if (mikeScenario.MikeScenarioStartDateTime_Local.Year < 1980)
                {
                    mikeScenario.HasErrors = true;
                    yield return(new ValidationResult(string.Format(CSSPServicesRes._YearShouldBeBiggerThan_, "MikeScenarioStartDateTime_Local", "1980"), new[] { "MikeScenarioStartDateTime_Local" }));
                }
            }

            if (mikeScenario.MikeScenarioEndDateTime_Local.Year == 1)
            {
                mikeScenario.HasErrors = true;
                yield return(new ValidationResult(string.Format(CSSPServicesRes._IsRequired, "MikeScenarioEndDateTime_Local"), new[] { "MikeScenarioEndDateTime_Local" }));
            }
            else
            {
                if (mikeScenario.MikeScenarioEndDateTime_Local.Year < 1980)
                {
                    mikeScenario.HasErrors = true;
                    yield return(new ValidationResult(string.Format(CSSPServicesRes._YearShouldBeBiggerThan_, "MikeScenarioEndDateTime_Local", "1980"), new[] { "MikeScenarioEndDateTime_Local" }));
                }
            }

            if (mikeScenario.MikeScenarioStartExecutionDateTime_Local != null && ((DateTime)mikeScenario.MikeScenarioStartExecutionDateTime_Local).Year < 1980)
            {
                mikeScenario.HasErrors = true;
                yield return(new ValidationResult(string.Format(CSSPServicesRes._YearShouldBeBiggerThan_, "MikeScenarioStartExecutionDateTime_Local", "1980"), new[] { "MikeScenarioStartExecutionDateTime_Local" }));
            }

            if (mikeScenario.MikeScenarioExecutionTime_min != null)
            {
                if (mikeScenario.MikeScenarioExecutionTime_min < 1 || mikeScenario.MikeScenarioExecutionTime_min > 100000)
                {
                    mikeScenario.HasErrors = true;
                    yield return(new ValidationResult(string.Format(CSSPServicesRes._ValueShouldBeBetween_And_, "MikeScenarioExecutionTime_min", "1", "100000"), new[] { "MikeScenarioExecutionTime_min" }));
                }
            }

            if (mikeScenario.WindSpeed_km_h < 0 || mikeScenario.WindSpeed_km_h > 100)
            {
                mikeScenario.HasErrors = true;
                yield return(new ValidationResult(string.Format(CSSPServicesRes._ValueShouldBeBetween_And_, "WindSpeed_km_h", "0", "100"), new[] { "WindSpeed_km_h" }));
            }

            if (mikeScenario.WindDirection_deg < 0 || mikeScenario.WindDirection_deg > 360)
            {
                mikeScenario.HasErrors = true;
                yield return(new ValidationResult(string.Format(CSSPServicesRes._ValueShouldBeBetween_And_, "WindDirection_deg", "0", "360"), new[] { "WindDirection_deg" }));
            }

            if (mikeScenario.DecayFactor_per_day < 0 || mikeScenario.DecayFactor_per_day > 100)
            {
                mikeScenario.HasErrors = true;
                yield return(new ValidationResult(string.Format(CSSPServicesRes._ValueShouldBeBetween_And_, "DecayFactor_per_day", "0", "100"), new[] { "DecayFactor_per_day" }));
            }

            if (mikeScenario.DecayFactorAmplitude < 0 || mikeScenario.DecayFactorAmplitude > 100)
            {
                mikeScenario.HasErrors = true;
                yield return(new ValidationResult(string.Format(CSSPServicesRes._ValueShouldBeBetween_And_, "DecayFactorAmplitude", "0", "100"), new[] { "DecayFactorAmplitude" }));
            }

            if (mikeScenario.ResultFrequency_min < 0 || mikeScenario.ResultFrequency_min > 100)
            {
                mikeScenario.HasErrors = true;
                yield return(new ValidationResult(string.Format(CSSPServicesRes._ValueShouldBeBetween_And_, "ResultFrequency_min", "0", "100"), new[] { "ResultFrequency_min" }));
            }

            if (mikeScenario.AmbientTemperature_C < -10 || mikeScenario.AmbientTemperature_C > 40)
            {
                mikeScenario.HasErrors = true;
                yield return(new ValidationResult(string.Format(CSSPServicesRes._ValueShouldBeBetween_And_, "AmbientTemperature_C", "-10", "40"), new[] { "AmbientTemperature_C" }));
            }

            if (mikeScenario.AmbientSalinity_PSU < 0 || mikeScenario.AmbientSalinity_PSU > 40)
            {
                mikeScenario.HasErrors = true;
                yield return(new ValidationResult(string.Format(CSSPServicesRes._ValueShouldBeBetween_And_, "AmbientSalinity_PSU", "0", "40"), new[] { "AmbientSalinity_PSU" }));
            }

            if (mikeScenario.UseSalinityAndTemperatureInitialConditionFromTVFileTVItemID != null)
            {
                TVItem TVItemUseSalinityAndTemperatureInitialConditionFromTVFileTVItemID = (from c in db.TVItems where c.TVItemID == mikeScenario.UseSalinityAndTemperatureInitialConditionFromTVFileTVItemID select c).FirstOrDefault();

                if (TVItemUseSalinityAndTemperatureInitialConditionFromTVFileTVItemID == null)
                {
                    mikeScenario.HasErrors = true;
                    yield return(new ValidationResult(string.Format(CSSPServicesRes.CouldNotFind_With_Equal_, "TVItem", "UseSalinityAndTemperatureInitialConditionFromTVFileTVItemID", (mikeScenario.UseSalinityAndTemperatureInitialConditionFromTVFileTVItemID == null ? "" : mikeScenario.UseSalinityAndTemperatureInitialConditionFromTVFileTVItemID.ToString())), new[] { "UseSalinityAndTemperatureInitialConditionFromTVFileTVItemID" }));
                }
                else
                {
                    List <TVTypeEnum> AllowableTVTypes = new List <TVTypeEnum>()
                    {
                        TVTypeEnum.File,
                    };
                    if (!AllowableTVTypes.Contains(TVItemUseSalinityAndTemperatureInitialConditionFromTVFileTVItemID.TVType))
                    {
                        mikeScenario.HasErrors = true;
                        yield return(new ValidationResult(string.Format(CSSPServicesRes._IsNotOfType_, "UseSalinityAndTemperatureInitialConditionFromTVFileTVItemID", "File"), new[] { "UseSalinityAndTemperatureInitialConditionFromTVFileTVItemID" }));
                    }
                }
            }

            if (mikeScenario.ForSimulatingMWQMRunTVItemID != null)
            {
                TVItem TVItemForSimulatingMWQMRunTVItemID = (from c in db.TVItems where c.TVItemID == mikeScenario.ForSimulatingMWQMRunTVItemID select c).FirstOrDefault();

                if (TVItemForSimulatingMWQMRunTVItemID == null)
                {
                    mikeScenario.HasErrors = true;
                    yield return(new ValidationResult(string.Format(CSSPServicesRes.CouldNotFind_With_Equal_, "TVItem", "ForSimulatingMWQMRunTVItemID", (mikeScenario.ForSimulatingMWQMRunTVItemID == null ? "" : mikeScenario.ForSimulatingMWQMRunTVItemID.ToString())), new[] { "ForSimulatingMWQMRunTVItemID" }));
                }
                else
                {
                    List <TVTypeEnum> AllowableTVTypes = new List <TVTypeEnum>()
                    {
                        TVTypeEnum.MWQMRun,
                    };
                    if (!AllowableTVTypes.Contains(TVItemForSimulatingMWQMRunTVItemID.TVType))
                    {
                        mikeScenario.HasErrors = true;
                        yield return(new ValidationResult(string.Format(CSSPServicesRes._IsNotOfType_, "ForSimulatingMWQMRunTVItemID", "MWQMRun"), new[] { "ForSimulatingMWQMRunTVItemID" }));
                    }
                }
            }

            if (mikeScenario.ManningNumber < 0 || mikeScenario.ManningNumber > 100)
            {
                mikeScenario.HasErrors = true;
                yield return(new ValidationResult(string.Format(CSSPServicesRes._ValueShouldBeBetween_And_, "ManningNumber", "0", "100"), new[] { "ManningNumber" }));
            }

            if (mikeScenario.NumberOfElements != null)
            {
                if (mikeScenario.NumberOfElements < 1 || mikeScenario.NumberOfElements > 1000000)
                {
                    mikeScenario.HasErrors = true;
                    yield return(new ValidationResult(string.Format(CSSPServicesRes._ValueShouldBeBetween_And_, "NumberOfElements", "1", "1000000"), new[] { "NumberOfElements" }));
                }
            }

            if (mikeScenario.NumberOfTimeSteps != null)
            {
                if (mikeScenario.NumberOfTimeSteps < 1 || mikeScenario.NumberOfTimeSteps > 1000000)
                {
                    mikeScenario.HasErrors = true;
                    yield return(new ValidationResult(string.Format(CSSPServicesRes._ValueShouldBeBetween_And_, "NumberOfTimeSteps", "1", "1000000"), new[] { "NumberOfTimeSteps" }));
                }
            }

            if (mikeScenario.NumberOfSigmaLayers != null)
            {
                if (mikeScenario.NumberOfSigmaLayers < 0 || mikeScenario.NumberOfSigmaLayers > 100)
                {
                    mikeScenario.HasErrors = true;
                    yield return(new ValidationResult(string.Format(CSSPServicesRes._ValueShouldBeBetween_And_, "NumberOfSigmaLayers", "0", "100"), new[] { "NumberOfSigmaLayers" }));
                }
            }

            if (mikeScenario.NumberOfZLayers != null)
            {
                if (mikeScenario.NumberOfZLayers < 0 || mikeScenario.NumberOfZLayers > 100)
                {
                    mikeScenario.HasErrors = true;
                    yield return(new ValidationResult(string.Format(CSSPServicesRes._ValueShouldBeBetween_And_, "NumberOfZLayers", "0", "100"), new[] { "NumberOfZLayers" }));
                }
            }

            if (mikeScenario.NumberOfHydroOutputParameters != null)
            {
                if (mikeScenario.NumberOfHydroOutputParameters < 0 || mikeScenario.NumberOfHydroOutputParameters > 100)
                {
                    mikeScenario.HasErrors = true;
                    yield return(new ValidationResult(string.Format(CSSPServicesRes._ValueShouldBeBetween_And_, "NumberOfHydroOutputParameters", "0", "100"), new[] { "NumberOfHydroOutputParameters" }));
                }
            }

            if (mikeScenario.NumberOfTransOutputParameters != null)
            {
                if (mikeScenario.NumberOfTransOutputParameters < 0 || mikeScenario.NumberOfTransOutputParameters > 100)
                {
                    mikeScenario.HasErrors = true;
                    yield return(new ValidationResult(string.Format(CSSPServicesRes._ValueShouldBeBetween_And_, "NumberOfTransOutputParameters", "0", "100"), new[] { "NumberOfTransOutputParameters" }));
                }
            }

            if (mikeScenario.EstimatedHydroFileSize != null)
            {
                if (mikeScenario.EstimatedHydroFileSize < 0 || mikeScenario.EstimatedHydroFileSize > 100000000)
                {
                    mikeScenario.HasErrors = true;
                    yield return(new ValidationResult(string.Format(CSSPServicesRes._ValueShouldBeBetween_And_, "EstimatedHydroFileSize", "0", "100000000"), new[] { "EstimatedHydroFileSize" }));
                }
            }

            if (mikeScenario.EstimatedTransFileSize != null)
            {
                if (mikeScenario.EstimatedTransFileSize < 0 || mikeScenario.EstimatedTransFileSize > 100000000)
                {
                    mikeScenario.HasErrors = true;
                    yield return(new ValidationResult(string.Format(CSSPServicesRes._ValueShouldBeBetween_And_, "EstimatedTransFileSize", "0", "100000000"), new[] { "EstimatedTransFileSize" }));
                }
            }

            if (mikeScenario.LastUpdateDate_UTC.Year == 1)
            {
                mikeScenario.HasErrors = true;
                yield return(new ValidationResult(string.Format(CSSPServicesRes._IsRequired, "LastUpdateDate_UTC"), new[] { "LastUpdateDate_UTC" }));
            }
            else
            {
                if (mikeScenario.LastUpdateDate_UTC.Year < 1980)
                {
                    mikeScenario.HasErrors = true;
                    yield return(new ValidationResult(string.Format(CSSPServicesRes._YearShouldBeBiggerThan_, "LastUpdateDate_UTC", "1980"), new[] { "LastUpdateDate_UTC" }));
                }
            }

            TVItem TVItemLastUpdateContactTVItemID = (from c in db.TVItems where c.TVItemID == mikeScenario.LastUpdateContactTVItemID select c).FirstOrDefault();

            if (TVItemLastUpdateContactTVItemID == null)
            {
                mikeScenario.HasErrors = true;
                yield return(new ValidationResult(string.Format(CSSPServicesRes.CouldNotFind_With_Equal_, "TVItem", "LastUpdateContactTVItemID", mikeScenario.LastUpdateContactTVItemID.ToString()), new[] { "LastUpdateContactTVItemID" }));
            }
            else
            {
                List <TVTypeEnum> AllowableTVTypes = new List <TVTypeEnum>()
                {
                    TVTypeEnum.Contact,
                };
                if (!AllowableTVTypes.Contains(TVItemLastUpdateContactTVItemID.TVType))
                {
                    mikeScenario.HasErrors = true;
                    yield return(new ValidationResult(string.Format(CSSPServicesRes._IsNotOfType_, "LastUpdateContactTVItemID", "Contact"), new[] { "LastUpdateContactTVItemID" }));
                }
            }

            retStr = "";      // added to stop compiling CSSPError
            if (retStr != "") // will never be true
            {
                mikeScenario.HasErrors = true;
                yield return(new ValidationResult("AAA", new[] { "AAA" }));
            }
        }
        public void MikeScenario_Controller_GetMikeScenarioList_Test()
        {
            foreach (LanguageEnum LanguageRequest in AllowableLanguages)
            {
                foreach (int ContactID in new List <int>()
                {
                    AdminContactID
                })                                                             //, TestEmailValidatedContactID, TestEmailNotValidatedContactID })
                {
                    MikeScenarioController mikeScenarioController = new MikeScenarioController(DatabaseTypeEnum.SqlServerTestDB);
                    Assert.IsNotNull(mikeScenarioController);
                    Assert.AreEqual(DatabaseTypeEnum.SqlServerTestDB, mikeScenarioController.DatabaseType);

                    MikeScenario mikeScenarioFirst = new MikeScenario();
                    int          count             = -1;
                    Query        query             = new Query();
                    using (CSSPDBContext db = new CSSPDBContext(DatabaseTypeEnum.SqlServerTestDB))
                    {
                        MikeScenarioService mikeScenarioService = new MikeScenarioService(query, db, ContactID);
                        mikeScenarioFirst = (from c in db.MikeScenarios select c).FirstOrDefault();
                        count             = (from c in db.MikeScenarios select c).Count();
                        count             = (query.Take > count ? count : query.Take);
                    }

                    // ok with MikeScenario info
                    IHttpActionResult jsonRet = mikeScenarioController.GetMikeScenarioList();
                    Assert.IsNotNull(jsonRet);

                    OkNegotiatedContentResult <List <MikeScenario> > ret = jsonRet as OkNegotiatedContentResult <List <MikeScenario> >;
                    Assert.AreEqual(mikeScenarioFirst.MikeScenarioID, ret.Content[0].MikeScenarioID);
                    Assert.AreEqual((count > query.Take ? query.Take : count), ret.Content.Count);

                    List <MikeScenario> mikeScenarioList = new List <MikeScenario>();
                    count = -1;
                    query = new Query();
                    using (CSSPDBContext db = new CSSPDBContext(DatabaseTypeEnum.SqlServerTestDB))
                    {
                        MikeScenarioService mikeScenarioService = new MikeScenarioService(query, db, ContactID);
                        mikeScenarioList = (from c in db.MikeScenarios select c).OrderBy(c => c.MikeScenarioID).Skip(0).Take(2).ToList();
                        count            = (from c in db.MikeScenarios select c).Count();
                    }

                    if (count > 0)
                    {
                        query.Skip = 0;
                        query.Take = 5;
                        count      = (query.Take > count ? query.Take : count);

                        // ok with MikeScenario info
                        jsonRet = mikeScenarioController.GetMikeScenarioList(query.Language.ToString(), query.Skip, query.Take);
                        Assert.IsNotNull(jsonRet);

                        ret = jsonRet as OkNegotiatedContentResult <List <MikeScenario> >;
                        Assert.AreEqual(mikeScenarioList[0].MikeScenarioID, ret.Content[0].MikeScenarioID);
                        Assert.AreEqual((count > query.Take ? query.Take : count), ret.Content.Count);

                        if (count > 1)
                        {
                            query.Skip = 1;
                            query.Take = 5;
                            count      = (query.Take > count ? query.Take : count);

                            // ok with MikeScenario info
                            IHttpActionResult jsonRet2 = mikeScenarioController.GetMikeScenarioList(query.Language.ToString(), query.Skip, query.Take);
                            Assert.IsNotNull(jsonRet2);

                            OkNegotiatedContentResult <List <MikeScenario> > ret2 = jsonRet2 as OkNegotiatedContentResult <List <MikeScenario> >;
                            Assert.AreEqual(mikeScenarioList[1].MikeScenarioID, ret2.Content[0].MikeScenarioID);
                            Assert.AreEqual((count > query.Take ? query.Take : count), ret2.Content.Count);
                        }
                    }
                }
            }
        }
Ejemplo n.º 17
0
        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);
        }