public void PollForFailedArchiveUpload() { try { _logger.Info("polling Result archive in progress..."); var resultInProgress = _resultArchiveUploadRepository.GetResultArchiveUploadingAfterHours(_markFailedAfterHours); if (resultInProgress != null && resultInProgress.Any()) { _logger.Info("Number of result in progress " + resultInProgress.Count()); foreach (var resultArchive in resultInProgress) { resultArchive.Status = ResultArchiveUploadStatus.UploadFailed; if (!resultArchive.UploadEndTime.HasValue) { resultArchive.UploadEndTime = DateTime.Now; } _resultArchiveUploadRepository.Save(resultArchive); } } } catch (Exception ex) { _logger.Error("exception occurred: " + ex.Message); _logger.Error("Stack trace: " + ex.StackTrace); } _logger.Info("result marking is done"); }
public void SaveNew_withoutFileId_Test() { var resultArchive = new ResultArchive() { EventId = 1445, UploadedByOrgRoleUserId = 1, UploadStartTime = DateTime.Now, Status = ResultArchiveUploadStatus.Uploading }; resultArchive = _resultArchiveUploadRepository.Save(resultArchive); Assert.IsNotNull(resultArchive); _validResultArchiveId = resultArchive.Id; Assert.Greater(resultArchive.Id, 0); }
public void PollforUploadCompleteResultArchives() { var tempLogger = _logManager.GetLogger("jobs"); var resultArchives = _resultArchiveUploadRepository.Get(ResultArchiveUploadStatus.Uploaded); resultArchives = resultArchives.Where(r => r.FileId.HasValue).OrderBy(r => r.UploadEndTime); if (resultArchives.Count() > 0) { tempLogger.Info("Got the uploaded files list."); } foreach (var resultArchive in resultArchives) { var logFileName = "File_" + resultArchive.Id; ILogger logger = new NLogLogManager().GetLogger(logFileName); var theEvent = new LogEventInfo(LogLevel.Off, "", logFileName); theEvent.Properties["LogFileName"] = logFileName; string extractedFilePath = ""; string zipFilePath = ""; logger.Info( "\n\n****************************************************************************************************************** "); try { // ReSharper disable PossibleInvalidOperationException var file = _fileRepository.GetById(resultArchive.FileId.Value); // ReSharper restore PossibleInvalidOperationException if (file == null) { logger.Info(String.Format("\nFile Information not found for Result Archive Id: {0}, uploaded on {1}, for the Event Id: {2} ", resultArchive.Id, resultArchive.UploadEndTime.Value, resultArchive.EventId)); resultArchive.Status = ResultArchiveUploadStatus.FileNotFound; _resultArchiveUploadRepository.Save(resultArchive); continue; } var mediaLocation = _mediaRepository.GetResultArchiveMediaFileLocation(resultArchive.EventId); if (!System.IO.File.Exists(mediaLocation.PhysicalPath + file.Path)) { logger.Info(String.Format("\nInvalid File Path for Result Archive Id: {0}, uploaded on {1}, for the Event Id: {2} ", resultArchive.Id, resultArchive.UploadEndTime.Value, resultArchive.EventId)); resultArchive.Status = ResultArchiveUploadStatus.FileNotFound; _resultArchiveUploadRepository.Save(resultArchive); continue; } zipFilePath = mediaLocation.PhysicalPath + file.Path; } catch (Exception ex) { logger.Info(String.Format("\nSystem Failure, while fetching File Info for Result Archive Id: {0}, uploaded on {1}, for the Event Id: {2}. \nMessage:{3} \n\t {4}", resultArchive.Id, resultArchive.UploadEndTime.Value, resultArchive.EventId, ex.Message, ex.StackTrace)); resultArchive.Status = ResultArchiveUploadStatus.FileNotFound; _resultArchiveUploadRepository.Save(resultArchive); continue; } try { resultArchive.ParseStartTime = DateTime.Now; resultArchive.Status = ResultArchiveUploadStatus.Parsing; _resultArchiveUploadRepository.Save(resultArchive); } catch (Exception ex) { logger.Info("\nSystem Failure, while saving 'Parsing Start Time'! Message: " + ex.Message + "\n\t" + ex.StackTrace); continue; } try { extractedFilePath = _zipHelper.ExtractZipFiles(zipFilePath); } catch (Exception ex) { logger.Info(String.Format("\nSystem Failure, Invalid File Format for Result Archive Id: {0}, uploaded on {1}, for the Event Id: {2}. \nMessage:{3} \n\t {4}", resultArchive.Id, resultArchive.UploadEndTime.Value, resultArchive.EventId, ex.Message, ex.StackTrace)); resultArchive.Status = ResultArchiveUploadStatus.InvalidFileFormat; _resultArchiveUploadRepository.Save(resultArchive); continue; } try { logger.Info(String.Format("\nParsing Started for Result Archive Id: {0}, uploaded on {1}, for the Event Id: {2} ", resultArchive.Id, resultArchive.UploadEndTime.Value, resultArchive.EventId)); _resultParser = new ResultParser(resultArchive.Id, extractedFilePath, _corporateAccountRepository, _mediaRepository, _resultArchiveUploadRepository, _resultArchiveUploadLogRepository, logger, _settings, _customerRepository, _zipHelper, _basicBiometricRepository, _eventCustomerRepository, _lipidParserHelper, _endofDayService, _customerService, _eventRepository); _resultParser.Parse(); logger.Info("\nParsing completed without any system Failure."); resultArchive.ParseEndTime = DateTime.Now; //Directory.Delete(extractedFilePath, true); } catch (IOException ex) { logger.Info("\nParsing Failed! Message: " + ex.Message + "\n\t" + ex.StackTrace); resultArchive.ParseEndTime = DateTime.Now; resultArchive.Status = ResultArchiveUploadStatus.ParseFailed; _resultArchiveUploadRepository.Save(resultArchive); } catch (Exception ex) { logger.Info("\nParsing Failed! Message: " + ex.Message + "\n\t" + ex.StackTrace); resultArchive.ParseEndTime = DateTime.Now; resultArchive.Status = ResultArchiveUploadStatus.ParseFailed; _resultArchiveUploadRepository.Save(resultArchive); Directory.Delete(extractedFilePath, true); } finally { var ecs = _eventCustomerResultRepository.GetByEventId(resultArchive.EventId); if (ecs != null && ecs.Count() > 0) { foreach (var eventCustomerResult in ecs) { _eventCustomerResultRepository.SetEventCustomerResultState(eventCustomerResult.EventId, eventCustomerResult.CustomerId); } } // GC.Collect(); //logger.Info("Calling gc collect"); Thread.Sleep(2000); } try { var resultArchiveLogs = _resultArchiveUploadLogRepository.GetbyResultArchiveId(resultArchive.Id); var succesFulRecords = resultArchiveLogs != null?resultArchiveLogs.Where(rl => rl.IsSuccessful).Count() : 0; if (succesFulRecords > 0) { resultArchive.Status = ResultArchiveUploadStatus.Parsed; } else { resultArchive.Status = ResultArchiveUploadStatus.ParseFailed; } var customerCount = resultArchiveLogs != null?resultArchiveLogs.Select(rl => rl.CustomerId).Distinct().Count() : 0; resultArchive.CustomerRecordsFound = customerCount; _resultArchiveUploadRepository.Save(resultArchive); } catch (Exception ex) { logger.Info("/Saving Parse End Data Failed! Message: " + ex.Message + "\n\t" + ex.StackTrace); } } }
public JsonResult CreateResultArchive(long eventId, string fileName, long fileSize) { if (eventId < 1) { throw new Exception("EventId should not be empty!"); } try { var theEvent = _eventRepository.GetById(eventId); if (theEvent == null || theEvent.EventDate.Date > DateTime.Now.Date || theEvent.Status != EventStatus.Active || theEvent.PodIds.IsNullOrEmpty()) { throw new Exception("Provide a valid EventId!"); } } catch { var model = new ResultArchiveUploadEditModel { EventId = -1, File = null, Id = 0 }; return(Json(model, JsonRequestBehavior.AllowGet)); } var file = new File { Path = fileName, Type = FileType.Compressed, FileSize = fileSize, UploadedBy = new OrganizationRoleUser(_session.UserSession.CurrentOrganizationRole.OrganizationRoleUserId), UploadedOn = DateTime.Now }; file = _fileRepository.Save(file); var resultArchive = new ResultArchive { FileId = file.Id, EventId = eventId, UploadStartTime = DateTime.Now, Status = ResultArchiveUploadStatus.Uploading, UploadedByOrgRoleUserId = _session.UserSession.CurrentOrganizationRole.OrganizationRoleUserId }; resultArchive = _resultArchiveUploadRepository.Save(resultArchive); //update the file name file.Path = _fileHelper.AddPostFixToFileName(file.Path, resultArchive.Id.ToString()); _fileRepository.Save(file); //return ResultArchiveUploadEditModel; var editModel = new ResultArchiveUploadEditModel { EventId = eventId, File = file, Id = resultArchive.Id }; return(Json(editModel, JsonRequestBehavior.AllowGet)); }