private static FILESTATE IsTheSameScript(String FilePathStr, List <ScriptStructureNew> NewScriptCollection, STATIONNAME StationName, List <ScriptConfigure> scriptConfigures) { StationScript ThisStation = GetStationScript(StationName); if (ThisStation != null) { if (ThisStation.LastestScriptFileName != FilePathStr) { return(FILESTATE.NOTSAME); } if (scriptConfigure != null) { ScriptConfigure tempScript = scriptConfigure.FirstOrDefault(Item => Item.config_name == StationName.ToString()); if (tempScript != null) { if (tempScript.config_status == false) { Console.WriteLine(StationName + " | RE-SENDING NOT SEND TO STATION -- FILE STATE (" + tempScript.config_status + ")"); return(FILESTATE.RESEND); } } } if (NewScriptCollection.Count() != ThisStation.ScriptCollection.Count() && ThisStation.ScriptCollection.Count() > 0) { Console.WriteLine(StationName + " | COUNT: " + NewScriptCollection.Count() + " == " + ThisStation.ScriptCollection.Count()); return(FILESTATE.COMMANDCHANGE); } if (ThisStation.LastestScriptFileName == FilePathStr) { return(FILESTATE.SAME); } for (int i = 0; i < NewScriptCollection.Count(); i++) { if (NewScriptCollection[i].ScriptID != ThisStation.ScriptCollection[i].ScriptID) { Console.WriteLine(StationName + " | NOT SAME -- SCRIPT ID (" + NewScriptCollection[i].ScriptID + " != " + ThisStation.ScriptCollection[i].ScriptID); return(FILESTATE.DIFFID); } if (NewScriptCollection[i].ScriptState == SCRIPTSTATE.WAITINGSERVER.ToString() || NewScriptCollection[i].ScriptState == SCRIPTSTATE.SENDINGTOSTATION.ToString()) { Console.WriteLine(StationName + " | RE-SENDING NOT SEND TO STATION -- STATE (" + NewScriptCollection[i].ScriptState + ")"); return(FILESTATE.RESEND); } } //Console.WriteLine("SAME FILE ALERT"); } else { return(FILESTATE.NOTSAME); } return(FILESTATE.SAME); }
private static Boolean ExtractScriptData(String FileName, STATIONNAME StationName, List <ScriptConfigure> scriptConfigures, bool checkSameScript) { Boolean IsScriptOK = false; //StationName = STATIONNAME.NULL; String FilePathStr = FileName; if (File.Exists(FilePathStr)) { try { using (FileStream fs = new FileStream(FilePathStr, FileMode.Open, FileAccess.Read, FileShare.None)) { using (StreamReader r = new StreamReader(fs)) { //Console.WriteLine("Reading... " + FilePathStr); String jsonString = r.ReadToEnd(); if (jsonString.Length > 0) { try { List <ScriptStructureNew> NewScriptCollection = JsonConvert.DeserializeObject <List <ScriptStructureNew> >(jsonString); if (NewScriptCollection.Count > 0) { String TempFileNameStr = FilePathStr.Split('\\').Last(); TempFileNameStr = TempFileNameStr.Replace(".txt", ""); FILESTATE FileState = IsTheSameScript(TempFileNameStr, NewScriptCollection, StationName, scriptConfigures); if (FileState != FILESTATE.SAME || !checkSameScript) { bool IsMustInsertToDB = true; Console.WriteLine("Extracting Script... : " + FilePathStr); StationScript scriptTemp = ScriptStation.FirstOrDefault(Item => Item.StationName == StationName); scriptTemp.LastestScriptFileName = TempFileNameStr; if (scriptConfigure == null) { scriptConfigure = new List <ScriptConfigure>(); scriptConfigure.Add(new ScriptConfigure(StationName.ToString(), TempFileNameStr, false, true)); } else if (scriptTemp == null) { scriptConfigure.Add(new ScriptConfigure(StationName.ToString(), TempFileNameStr, false, true)); } else { ScriptConfigure tempScript = scriptConfigure.FirstOrDefault(Item => Item.config_name == StationName.ToString()); if (tempScript != null) { if (tempScript.config_isaddtodb == true) { IsMustInsertToDB = false; } else { tempScript.config_isaddtodb = true; } tempScript.config_value = TempFileNameStr; tempScript.config_status = false; } else { scriptConfigure.Add(new ScriptConfigure(StationName.ToString(), TempFileNameStr, false, true)); } } if (FileState == FILESTATE.NOTSAME) { IsMustInsertToDB = true; } //DBScheduleEngine.DropSchedule(StationName); //Console.WriteLine(IsMustInsertToDB); String Message = ""; Console.WriteLine("Verifying Script... : " + FilePathStr); if (VerifyScript(StationName, NewScriptCollection, out Message)) { Console.WriteLine("Clear Fail Script to Database... : " + FilePathStr); DBScheduleEngine.CancleFailSchedule(StationName); Console.WriteLine("Insert Script to Database... (DB: " + IsMustInsertToDB + ") : " + FilePathStr); foreach (ScriptStructureNew Script in NewScriptCollection) { //DUMMY ONLY //Script.TargetID = "XXXXXX"; if (IsMustInsertToDB) { String _id = DBScheduleEngine.InsertSchedule(Script); if (_id != null) { Script._id = _id; } } else { String _id = DBScheduleEngine.GetId(Script); Script._id = _id; //Console.WriteLine("OLD ID: " + _id); } //if (Script.ScriptState != SCRIPTSTATE.CANCELED.ToString()) //{ // Script.ScriptState = SCRIPTSTATE.WAITINGSERVER.ToString(); //} } Console.WriteLine("Add Script to Object... : " + FilePathStr); StationName = TTCSHelper.StationStrConveter(NewScriptCollection.FirstOrDefault().StationName); StationScript ThisStationTemp = GetStationScript(StationName); if (ThisStationTemp == null) { ThisStationTemp = new StationScript(StationName); ScriptStation.Add(ThisStationTemp); } else { ThisStationTemp.RemoveAllScript(); } ThisStationTemp.AddScript(NewScriptCollection); DisplayScript(Message, StationName); IsScriptOK = true; fs.Close(); } else { fs.Close(); DisplayScriptMessage(Message); Console.WriteLine("Verifying command failed, Deleted."); Console.WriteLine(Message); File.Delete(@FilePathStr); } } } else { //Console.WriteLine("No Data Received, Deleted."); } } catch (JsonReaderException ex) { fs.Close(); try { Console.WriteLine("File isn't jSon, Deleted."); File.Delete(@FilePathStr); } catch (Exception x) { Console.WriteLine(x.Message); } } catch (Exception ex2) { fs.Close(); Console.WriteLine(ex2.Message); File.Delete(@FilePathStr); } } else { fs.Close(); try { Console.WriteLine("File size <= 0 byte, Deleted."); File.Delete(@FilePathStr); } catch (Exception x) { Console.WriteLine(x); } } } } } catch (Exception z) { Console.WriteLine(z); } } return(IsScriptOK); }