public static ScriptHost.Result BillingTask(string task, QueryParameters queryParams) { ScriptHost.Result result = new ScriptHost.Result(); DateTime sd; DateTime ed; DateTime period; void getDates(bool startRequired, bool endRequired, bool periodRequired) { if (startRequired && !queryParams.ContainsParameter("StartDate")) { throw new Exception("Missing parameter: StartDate"); } if (endRequired && !queryParams.ContainsParameter("EndDate")) { throw new Exception("Missing parameter: EndDate"); } if (periodRequired && !queryParams.ContainsParameter("Period")) { throw new Exception("Missing parameter: Period"); } sd = queryParams.GetValue("StartDate", DateTime.Now); ed = queryParams.GetValue("EndDate", DateTime.Now); period = queryParams.GetValue("Period", DateTime.Now); } var context = "Data.Models.CommandLine.CommandLineUtility.BillingTask"; var clientId = queryParams.GetValue("ClientID", 0); using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["cnSselData"].ConnectionString)) { conn.Open(); switch (task) { case "ToolDataClean": getDates(true, true, false); var writeToolDataCleanResult = new WriteToolDataCleanProcess(new WriteToolDataCleanConfig { Connection = conn, StartDate = sd, EndDate = ed, ClientID = clientId, Context = context }).Start(); result.Success = true; result.Message = null; result.Data = writeToolDataCleanResult.LogText; break; case "ToolData": getDates(true, true, false); var writeToolDataResult = new WriteToolDataProcess(new WriteToolDataConfig { Connection = conn, Period = sd, ClientID = clientId, ResourceID = queryParams.GetValue("ResourceID", 0), Context = context }).Start(); result.Success = true; result.Message = null; result.Data = writeToolDataResult.LogText; break; case "RoomDataClean": getDates(true, true, false); var writeRoomDataCleanResult = new WriteRoomDataCleanProcess(new WriteRoomDataCleanConfig { Connection = conn, StartDate = sd, EndDate = ed, ClientID = clientId, Context = context }).Start(); result.Success = true; result.Message = null; result.Data = writeRoomDataCleanResult.LogText; break; case "RoomData": getDates(true, true, false); var writeRoomDataResult = new WriteRoomDataProcess(new WriteRoomDataConfig { Connection = conn, Period = sd, ClientID = clientId, RoomID = queryParams.GetValue("RoomID", 0), Context = context }).Start(); result.Success = true; result.Message = null; result.Data = writeRoomDataResult.LogText; break; case "StoreDataClean": getDates(true, true, false); var writeStoreDataCleanResult = new WriteStoreDataCleanProcess(new WriteStoreDataCleanConfig { Connection = conn, StartDate = sd, EndDate = ed, ClientID = clientId, Context = context }).Start(); result.Success = true; result.Message = null; result.Data = writeStoreDataCleanResult.LogText; break; case "StoreData": getDates(true, true, false); var writeStoreDataResult = new WriteStoreDataProcess(new WriteStoreDataConfig { Connection = conn, Period = sd, ClientID = clientId, ItemID = queryParams.GetValue("ItemID", 0), Context = context }).Start(); result.Success = true; result.Message = null; result.Data = writeStoreDataResult.LogText; break; case "ToolBillingStep1": getDates(false, false, true); var step1 = new BillingDataProcessStep1(new Step1Config { Connection = conn, Period = period, ClientID = clientId, IsTemp = queryParams.GetValue("IsTemp", false), Now = DateTime.Now, Context = context }); var step1Result = step1.PopulateToolBilling(); result.Success = true; result.Message = null; result.Data = step1Result.LogText; break; default: result.Success = false; result.Message = "Unknown task: " + task; break; } conn.Close(); } return(result); }