private static Models.ProcessFiles.Response.PipelineStatus CheckPipelineStatus() { try { var context = new Magnaflow_WebEntities(); Models.ProcessFiles.Response.PipelineStatus pipelineStatus = new Models.ProcessFiles.Response.PipelineStatus(); var activeFileBatch = context.EPM_ProcessFilesBatch.Where(x => x.Active == true).FirstOrDefault(); if (activeFileBatch == null) { pipelineStatus.Active = false; } else { pipelineStatus.Active = true; pipelineStatus.ActiveStage = activeFileBatch.StageId; pipelineStatus.BatchId = activeFileBatch.BatchId; } return(pipelineStatus); } catch (Exception ex) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound) { ReasonPhrase = "> from CheckPipelineStatus: " + ex.Message }); } }
public IHttpActionResult PipelineStatus() { try { Models.ProcessFiles.Response.PipelineStatus pipelineStatus = CheckPipelineStatus(); return(Ok(pipelineStatus)); } catch (Exception ex) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound) { ReasonPhrase = "> From PipelineStatus: " + ((HttpResponseException)ex).Response.ReasonPhrase }); } }
private static void AssertStep(Models.ProcessFiles.Response.PipelineStatus pipelineStatus, Models.Types.ProcessFilesStages expectedStage) { if (pipelineStatus.Active == false) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) { ReasonPhrase = "Pipeline is empty. Start by uploading files to Aces/Pies." }); } else if (pipelineStatus.ActiveStage != expectedStage) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound) { ReasonPhrase = "Process pipeline is already in use at another stage." }); } }
public IHttpActionResult SendToProduction() { try { Models.ProcessFiles.Response.PipelineStatus pipelineStatus = CheckPipelineStatus(); AssertStep(pipelineStatus, Models.Types.ProcessFilesStages.StagingComplete); NetworkCredential NCredentials = GetNetworkCredential(); //once these checks are complete then send run batch files to send files to prod using (new NetworkConnection(GetFileData(), NCredentials)) { //The Host Directroy DirectoryInfo stagingDirectoryInfo = Directory.CreateDirectory(GetFileData()); //Individual Aces and Pies Directory var sendToProduction = Import(stagingDirectoryInfo, _MoveToProduction); //if (!sendToProduction) //{ // throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) // { // ReasonPhrase = "Aces import process failed" // }); //} //if (!importPiesSuccess) //{ // throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) // { // ReasonPhrase = "Pies import process failed" // }); //} Helpers.ProcessFilePipelineTracker.ImportComplete(pipelineStatus.BatchId, true); } //when that's done then move batch file step forward to prod init Helpers.ProcessFilePipelineTracker.ProductionInit(pipelineStatus.BatchId); return(Ok(true)); }catch (HttpResponseException ex) { throw; }catch (Exception ex) { throw; } }
public IHttpActionResult CompleteContents() { try { var context = new Magnaflow_WebEntities(); var stagingFilesContents = new Models.ProcessFiles.Response.StagingDirectoryContent(); Models.ProcessFiles.Response.PipelineStatus pipelineStatus = CheckPipelineStatus(); AssertStep(pipelineStatus, Models.Types.ProcessFilesStages.ProductionComplete); NetworkCredential NCredentials = GetNetworkCredential(); using (new NetworkConnection(GetFileStoreHost(), NCredentials)) { //The Host Directroy DirectoryInfo stagingDirectoryInfo = Directory.CreateDirectory(GetFileStoreHost()); //Individual Aces and Pies Directory DirectoryInfo directoryComplete = stagingDirectoryInfo.CreateSubdirectory(_Complete); //find files that are currently active var namesOfActiveFiles = context.EPM_ProcessFilesDetail.Where(x => x.BatchId == pipelineStatus.BatchId).Select(x => x.FileName).ToList(); //Get Name Files/Contents. var matchingNamesOfActiveFiles = directoryComplete.EnumerateFiles().Where(x => namesOfActiveFiles.Contains(x.Name)).Select(x => x.Name).ToList(); //var fileNamesPies = directoryPies.EnumerateFiles().Select(x => x.Name).ToList(); //stagingFilesContents.FileNamesAces = fileNamesAces; //stagingFilesContents.FileNamesPies = fileNamesPies; stagingFilesContents.FileNamesComplete = matchingNamesOfActiveFiles; //and before closing, release the pipeline Helpers.ProcessFilePipelineTracker.ClosePipeline(pipelineStatus.BatchId); return(Ok(stagingFilesContents)); } } catch (HttpResponseException ex) { throw; } catch (Exception ex) { throw; } }
public IHttpActionResult Import() { try { Models.ProcessFiles.Response.PipelineStatus pipelineStatus = CheckPipelineStatus(); AssertStep(pipelineStatus, Models.Types.ProcessFilesStages.ProductionInit); NetworkCredential NCredentials = GetNetworkCredential(); using (new NetworkConnection(GetFileStoreHost(), NCredentials)) { //The Host Directroy DirectoryInfo productionDirectoryInfo = Directory.CreateDirectory(GetFileStoreHost()); //Individual Aces and Pies Directory var importAcesSuccess = Import(productionDirectoryInfo, _ImportAcesBat); //gets hung up here for some time var importPiesSuccess = Import(productionDirectoryInfo, _ImportPiesBat); // gets hung up here too. if (!importAcesSuccess) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) { ReasonPhrase = "Aces import process failed" }); } if (!importPiesSuccess) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) { ReasonPhrase = "Pies import process failed" }); } Helpers.ProcessFilePipelineTracker.ImportComplete(pipelineStatus.BatchId, false); } return(Ok(true)); } catch (HttpResponseException ex) { throw; } catch (Exception ex) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError)); } }
private static Models.ProcessFiles.Response.PipelineStatus CheckPipelineStatus() { var context = new Magnaflow_WebEntities(); Models.ProcessFiles.Response.PipelineStatus pipelineStatus = new Models.ProcessFiles.Response.PipelineStatus(); var activeFileBatch = context.EPM_ProcessFilesBatch.Where(x => x.Active == true).FirstOrDefault(); if (activeFileBatch == null) { pipelineStatus.Active = false; } else { pipelineStatus.Active = true; pipelineStatus.ActiveStage = activeFileBatch.StageId; pipelineStatus.BatchId = activeFileBatch.BatchId; } return(pipelineStatus); }
public IHttpActionResult Import() { try { Models.ProcessFiles.Response.PipelineStatus pipelineStatus = CheckPipelineStatus(); AssertStep(pipelineStatus, Models.Types.ProcessFilesStages.StagingInit); NetworkCredential NCredentials = GetNetworkCredential(); DirectoryInfo stagingDirectoryInfo = Directory.CreateDirectory(GetFileData()); //used for testing //var importAcesSuccess = Import(stagingDirectoryInfo, _ImportMotorcycleBat); var importAcesSuccess = Import(stagingDirectoryInfo, _ImportAcesBat); var importPiesSuccess = Import(stagingDirectoryInfo, _ImportPiesBat); // //if (!importAcesSuccess) // //{ // // throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) // // { // // ReasonPhrase = "Aces import process failed" // // }); // //} // //if (!importPiesSuccess) // //{ // // throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) // // { // // ReasonPhrase = "Pies import process failed" // // }); // //} // Helpers.ProcessFilePipelineTracker.ImportComplete(pipelineStatus.BatchId, true); //var importPiesSuccess = Import(stagingDirectoryInfo, _ImportPiesBat); //DirectoryInfo debugFolder = Directory.CreateDirectory("D:\\Import\\Staging\\Scripts\\magnaflow_staging\\debug"); //var path = debugFolder.FullName + "\\logErr.txt"; //if (File.Exists(path)) //{ // File.Delete(path); //} //// Create the file. //using (FileStream fs = File.Create(path)) //{ // Byte[] info = new UTF8Encoding(true).GetBytes(importAcesSuccess); // // Add some information to the file. // fs.Write(info, 0, info.Length); //} //using (new NetworkConnection(GetFileStoreHostForImporting(), NCredentials)) //{ // //The Host Directroy // DirectoryInfo stagingDirectoryInfo = Directory.CreateDirectory(GetFileStoreHostForImporting()); // //Individual Aces and Pies Directory // //var impoartMotorcycleSuccess = Import(stagingDirectoryInfo, _ImportPiesBat); // //var importAcesSuccess = Import(stagingDirectoryInfo, _ImportAcesBat ); // //var importPiesSuccess = Import(stagingDirectoryInfo, _ImportPiesBat); // var importAcesSuccess = Import(stagingDirectoryInfo, _MagnaflowScriptsExecutableName, _ImportAcesArgs); // throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) // { // ReasonPhrase = importAcesSuccess // }); // //if (!importAcesSuccess) // //{ // // throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) // // { // // ReasonPhrase = "Aces import process failed" // // }); // //} // //if (!importPiesSuccess) // //{ // // throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) // // { // // ReasonPhrase = "Pies import process failed" // // }); // //} // Helpers.ProcessFilePipelineTracker.ImportComplete(pipelineStatus.BatchId, true); //} return(Ok(true)); } catch (HttpResponseException ex) { throw ex; } catch (Exception ex) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError)); } }