public static void ProcessWOsStartingAtEnforced() { //Unenforce WOs (from enforced state) using (var thas01 = new thas01Entities()) { thas01.Database.CommandTimeout = 50000; int enforcedCounter = 1; try { //Get only remaining error WOs - set back to enforce PrepareCompletedWorksOrdersForEnforcedRun(thas01); var completedWOs = thas01.THAS_CONNECT_GetCompletedWorksorders().ToList(); var enforcedWOs = completedWOs.Where(x => x.WorksOrderCostStatusCode == 3).ToList(); //Run enforce on error WOs RunEnforcedWorksOrders(enforcedWOs, enforcedCounter, thas01); } catch (Exception ex) { Console.WriteLine("WO Costing failed. " + ex.Message + ex.InnerException); } } }
public static void PrepareEnforcedWorksOrdersForOrganicRun(thas01Entities thas01) { // will set back any enforced works orders to an unchecked state so it can be considered by the normal wo costing application agent. Console.WriteLine("Attempting to prep enforced works orders."); thas01.THAS_CONNECT_WOCostingOrganicPrep(); Console.Write("Prepped enforced works orders for organic run."); }
public static void PrepareCompletedWorksOrdersForEnforcedRun(thas01Entities thas01) { // will set completed works orders to the required state for an enforced run. try { Console.WriteLine("Attempting to prep error works orders."); thas01.THAS_CONNECT_WOCostingEnforcePrep(); Console.Write("Prepped error works orders for enforced run."); } catch (Exception ex) { Console.WriteLine("Enforced prep failed. " + ex.Message + ex.InnerException); } }
public static void ProcessOrganicWOsWithoutPrep() { using (var thas01 = new thas01Entities()) { thas01.Database.CommandTimeout = 50000; var completedWOs = thas01.THAS_CONNECT_GetCompletedWorksorders().ToList(); var unenforcedWOs = completedWOs.Where(x => x.WorksOrderCostStatusCode == 1).ToList(); int enforcedCounter = 1; try { RunUnenforcedWorksOrders(unenforcedWOs, enforcedCounter, thas01); } catch (Exception ex) { Console.WriteLine("WO Costing failed. " + ex.Message + ex.InnerException); } } }
public static void RunErrorWorksOrders(List <THAS_CONNECT_GetCompletedWorksorders_Result> errorWOs, int woCounter, int woSuccessCounter, int woFailCounter, thas01Entities thas01) { foreach (var wo in errorWOs) { Logger.Log("WO Count: " + woCounter); woCounter++; var count = 1; Logger.Log("Attempting to Cost " + wo.WorksOrderNumber + "..."); //prepare works order var woFromDb = thas01.WorksOrders.Where(x => x.WorksOrderNumber == wo.WorksOrderNumber).First(); var wotFromDb = thas01.WorksOrderTransfers.Where(x => x.WorksOrderNumber == wo.WorksOrderNumber).First(); woFromDb.WorksOrderCostStatusCode = 1; wotFromDb.WorksOrderCostStatusCode = 1; thas01.SaveChanges(); //end works order preparation thas01.CostCompletedWO_CostWorksOrder(wo.WorksOrderNumber, "/A", 1); Logger.Log("Stored Procedure Finished Running..."); var thisWO = thas01.THAS_CONNECT_GetSingleWorksOrder(wo.WorksOrderNumber).First(); if (thisWO.WorksOrderStatusCode == 5) { //Must have costed successfully Logger.Log(thisWO.WorksOrderNumber + " Has Been Costed Successfully. Works Order Cost Status: " + thisWO.WorksOrderCostStatusCode + ". WO Success Count: " + woSuccessCounter); woSuccessCounter++; } else if (thisWO.WorksOrderCostStatusCode == 2) { Logger.Log(thisWO.WorksOrderNumber + " Has Failed To Be Costed..." + " WO Fail Count: " + woFailCounter); woFailCounter++; } while (thisWO.WorksOrderCostStatusCode == 1 && count < 10) { //Still ongoing Logger.Log(thisWO.WorksOrderNumber + " Is Still Processing... Check " + count); count++; } } }
public static void RunUnenforcedWorksOrders(List <THAS_CONNECT_GetCompletedWorksorders_Result> untriedWOs, int woCounter, thas01Entities thas01) { var thousCounter = 0; var deadlockCount = 0; Logger.Log("Start Time: " + DateTime.Now); foreach (var wo in untriedWOs) { try { woCounter++; if (woCounter % 1000 == 0) { thousCounter += 1; Logger.Log("Processed : " + thousCounter + "k records. Deadlock Count: " + deadlockCount + ". Time is now: " + DateTime.Now); } } catch (Exception) { deadlockCount++; } var origWOCostStatus = wo.WorksOrderCostStatusCode; var count = 1; thas01.CostCompletedWO_CostWorksOrder(wo.WorksOrderNumber, "/A", 1); var thisWO = thas01.THAS_CONNECT_GetSingleWorksOrder(wo.WorksOrderNumber).First(); //if (thisWO.WorksOrderStatusCode == 5) //{ // //Must have costed successfully // Logger.Log(thisWO.WorksOrderNumber + " Has Been Costed Successfully. Works Order Cost Status: " + thisWO.WorksOrderCostStatusCode); // count++; //} //else if (thisWO.WorksOrderCostStatusCode == 2) //{ // Logger.Log(thisWO.WorksOrderNumber + " Has Failed To Be Costed..."); // count++; //} while (thisWO.WorksOrderCostStatusCode == origWOCostStatus && count < 10) { //Still ongoing Logger.Log(thisWO.WorksOrderNumber + " Is Still Processing... Check " + count); count++; } } }
public static void ProcessWOsNormally() { //Unenforce WOs (from enforced state) using (var thas01 = new thas01Entities()) { thas01.Database.CommandTimeout = 50000; int unenforcedCounter = 1; int enforcedCounter = 1; try { try { PrepareEnforcedWorksOrdersForOrganicRun(thas01); try { //Run organically var liveWOs = thas01.THAS_CONNECT_GetCompletedWorksorders().ToList(); var untriedWOs = liveWOs.Where(x => x.WorksOrderCostStatusCode == 1).ToList(); RunUnenforcedWorksOrders(untriedWOs, unenforcedCounter, thas01); try { //Get only remaining error WOs - set back to enforce PrepareCompletedWorksOrdersForEnforcedRun(thas01); try { //Run enforce on error WOs var liveWOs2 = thas01.THAS_CONNECT_GetCompletedWorksorders().ToList(); var enforcedWOs = liveWOs2.Where(x => x.WorksOrderCostStatusCode == 3).ToList(); RunEnforcedWorksOrders(enforcedWOs, enforcedCounter, thas01); } catch (Exception ex) { Console.WriteLine("Enforced WO run error. " + ex.Message + ex.InnerException); } } catch (Exception ex) { Console.WriteLine("Enforced prep error. " + ex.Message + ex.InnerException); } } catch (Exception ex) { Console.WriteLine("Organic WO run error. " + ex.Message + ex.InnerException); } } catch (Exception ex) { Console.WriteLine("Organic run prep error. " + ex.Message + ex.InnerException); } } catch (Exception ex) { Console.WriteLine("WO Costing failed. " + ex.Message + ex.InnerException); } } }
public static void RunEnforcedWorksOrders(List <THAS_CONNECT_GetCompletedWorksorders_Result> enforcedWOs, int woCounter, thas01Entities thas01) { var deadlockCount = 0; var thousCounter = 0; Logger.Log("Start Time: " + DateTime.Now); foreach (var wo in enforcedWOs) { try { woCounter++; if (woCounter % 1000 == 0) { thousCounter += 1; Logger.Log("Processed : " + thousCounter + "k records. Time is now: " + DateTime.Now); } var count = 1; ////prepare works order //var woFromDb = thas01.WorksOrders.Where(x => x.WorksOrderNumber == wo.WorksOrderNumber).First(); //var wotFromDb = thas01.WorksOrderTransfers.Where(x => x.WorksOrderNumber == wo.WorksOrderNumber).First(); //woFromDb.WorksOrderCostStatusCode = 3; //wotFromDb.WorksOrderCostStatusCode = 3; //wotFromDb.IsEnforced = true; //thas01.SaveChanges(); //end works order preparation thas01.CostCompletedWO_CostWorksOrder(wo.WorksOrderNumber, "/A", 1); //Logger.Log("Stored Procedure Finished Running..."); var thisWO = thas01.THAS_CONNECT_GetSingleWorksOrder(wo.WorksOrderNumber).First(); //if (thisWO.WorksOrderStatusCode == 5) //{ // //Must have costed successfully // Logger.Log(thisWO.WorksOrderNumber + " Has Been Costed Successfully. Works Order Cost Status: " + thisWO.WorksOrderCostStatusCode + ". WO Success Count: " + woSuccessCounter); // woSuccessCounter++; //} //else if (thisWO.WorksOrderCostStatusCode == 2) //{ // Logger.Log(thisWO.WorksOrderNumber + " Has Failed To Be Costed..." + " WO Fail Count: " + woFailCounter); // woFailCounter++; //} while (thisWO.WorksOrderCostStatusCode == 1 && count < 10) { //Still ongoing Logger.Log(thisWO.WorksOrderNumber + " Is Still Processing... Check " + count); count++; } } catch (Exception) { deadlockCount++; } } }