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;
            }
        }
Esempio n. 5
0
        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;
            }
        }
Esempio n. 6
0
        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));
            }
        }
Esempio n. 7
0
        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));
            }
        }