Example #1
0
        public ExportableReportsQueue Save(ExportableReportsQueue domainObject)
        {
            using (var adapter = PersistenceLayer.GetDataAccessAdapter())
            {
                var entity = AutoMapper.Mapper.Map <ExportableReportsQueue, ExportableReportsQueueEntity>(domainObject);
                if (!adapter.SaveEntity(entity, true))
                {
                    throw new PersistenceFailureException("Could not save Exportable Reports Queue");
                }

                return(AutoMapper.Mapper.Map <ExportableReportsQueueEntity, ExportableReportsQueue>(entity));
            }
        }
Example #2
0
        public ExportableReportsQueue SaveExportableReportsQueue(object filter, long reportId, long requestedBy)
        {
            var filterObjectJson       = JsonConvert.SerializeObject(filter);
            var exportableReportsQueue = new ExportableReportsQueue
            {
                ReportId    = reportId,
                FilterData  = filterObjectJson,
                RequestedBy = requestedBy,
                RequestedOn = DateTime.Now,
                StatusId    = (long)ExportableReportStatus.Pending,
            };

            return(_exportableReportsQueueRepository.Save(exportableReportsQueue));
        }
Example #3
0
        private void SaveFile(ExportableReportsQueue exportableReportsQueue, string fileName)
        {
            var filePath = _exportableMediaLocation.PhysicalPath + fileName;
            var fileInfo = new FileInfo(filePath);

            var file = new File
            {
                Path       = fileName,
                FileSize   = fileInfo.Length,
                Type       = FileType.Compressed,
                UploadedBy = new OrganizationRoleUser(exportableReportsQueue.RequestedBy),
                UploadedOn = DateTime.Now
            };

            file = _fileRepository.Save(file);

            exportableReportsQueue.FileId = file.Id;

            UpdateExportReportEndTimeAndStaus(exportableReportsQueue, (long)ExportableReportStatus.Completed);
        }
Example #4
0
        public void PollForExportableRequest()
        {
            ExportableReportsQueue exportableReportsQueue = null;

            try
            {
                var timeOfDay = DateTime.Now.TimeOfDay;
                if (_isDevEnvironment || (timeOfDay > new TimeSpan(4, 0, 0)))
                {
                    _logger.Info("Exportable Report Generation Started");

                    exportableReportsQueue = _exportableReportsQueueRepository.GetExportableReportsQueueForService();

                    if (exportableReportsQueue == null)
                    {
                        _logger.Info("No Request pending in queue for generation");
                        return;
                    }

                    var orgRoleUser = _organizationRoleUserRepository.GetOrganizationRoleUser(exportableReportsQueue.RequestedBy);

                    var user       = _userRepository.GetUser(orgRoleUser.UserId);
                    var reportType = (ExportableReportType)exportableReportsQueue.ReportId;

                    _logger.Info("Generating Report :" + reportType.GetDescription() + " Requested by " + user.NameAsString);

                    UpdateExportReportStartTimeAndStaus(exportableReportsQueue);
                    var fileName = string.Empty;

                    switch (reportType)
                    {
                    case ExportableReportType.AppointmentsBooked:
                        var appointmentsBookedListModelFilter = Newtonsoft.Json.JsonConvert.DeserializeObject <AppointmentsBookedListModelFilter>(exportableReportsQueue.FilterData);
                        fileName = _schedulingExportableReportHelper.AppointmentBookedReportExport(appointmentsBookedListModelFilter, orgRoleUser.UserId);
                        break;

                    case ExportableReportType.CustomerExport:
                        var customerExportListModelFilter = Newtonsoft.Json.JsonConvert.DeserializeObject <CustomerExportListModelFilter>(exportableReportsQueue.FilterData);
                        fileName = _schedulingExportableReportHelper.CustomerReportExport(customerExportListModelFilter, orgRoleUser.UserId);
                        break;

                    case ExportableReportType.TestPerformed:
                        var testPerformedFilter = Newtonsoft.Json.JsonConvert.DeserializeObject <TestPerformedListModelFilter>(exportableReportsQueue.FilterData);
                        fileName = _medicalExportableReportHelper.TestPerformedReportExport(testPerformedFilter, orgRoleUser.UserId);
                        break;

                    case ExportableReportType.OutreachCallReport:
                        var outreachCallReportModelFilter = Newtonsoft.Json.JsonConvert.DeserializeObject <OutreachCallReportModelFilter>(exportableReportsQueue.FilterData);
                        fileName = _callCenterExportableReportHelper.OutreachCallReportExport(outreachCallReportModelFilter, orgRoleUser.UserId);
                        break;

                    case ExportableReportType.MemberStatusReport:
                        var memberStatusListModelFilter = Newtonsoft.Json.JsonConvert.DeserializeObject <MemberStatusListModelFilter>(exportableReportsQueue.FilterData);
                        fileName = _schedulingExportableReportHelper.MemberStatusReportExport(memberStatusListModelFilter, orgRoleUser.UserId);
                        break;

                    case ExportableReportType.TestNotPerformed:
                        var testNotPerformedFilter = Newtonsoft.Json.JsonConvert.DeserializeObject <TestNotPerformedListModelFilter>(exportableReportsQueue.FilterData);
                        fileName = _medicalExportableReportHelper.TestNotPerformedReportExport(testNotPerformedFilter, orgRoleUser.UserId);
                        break;

                    case ExportableReportType.GapsClosure:
                        var gapsClosureFilter = Newtonsoft.Json.JsonConvert.DeserializeObject <GapsClosureModelFilter>(exportableReportsQueue.FilterData);
                        fileName = _medicalExportableReportHelper.GapsReportExport(gapsClosureFilter, orgRoleUser.UserId);
                        break;

                    case ExportableReportType.GiftCertificate:
                        var giftCertificateFilter = Newtonsoft.Json.JsonConvert.DeserializeObject <GiftCertificateReportFilter>(exportableReportsQueue.FilterData);
                        fileName = _financeReportHelper.GiftCerificateExport(giftCertificateFilter, orgRoleUser.UserId);
                        break;

                    case ExportableReportType.EventArchiveStats:
                        var eventArchiveStatsFilter = Newtonsoft.Json.JsonConvert.DeserializeObject <EventArchiveStatsFilter>(exportableReportsQueue.FilterData);
                        fileName = _medicalExportableReportHelper.EventArchiveStatsExport(eventArchiveStatsFilter, orgRoleUser.UserId);
                        break;

                    case ExportableReportType.CallQueueSchedulingReport:
                        var callQueueCustomerReportFilter = Newtonsoft.Json.JsonConvert.DeserializeObject <CallQueueSchedulingReportFilter>(exportableReportsQueue.FilterData);
                        fileName = _callCenterExportableReportHelper.CallQueueSchedulingReportExport(callQueueCustomerReportFilter, orgRoleUser.UserId);
                        break;

                    case ExportableReportType.TestBooked:
                        var testBookedListModelFilter = Newtonsoft.Json.JsonConvert.DeserializeObject <TestsBookedListModelFilter>(exportableReportsQueue.FilterData);
                        fileName = _schedulingExportableReportHelper.TestBookedReportExport(testBookedListModelFilter, orgRoleUser.UserId);
                        break;

                    case ExportableReportType.CallQueueExcludedCustomerReport:
                        var callQueueExcludedCustomerReportModelFilter = Newtonsoft.Json.JsonConvert.DeserializeObject <CallQueueExcludedCustomerReportModelFilter>(exportableReportsQueue.FilterData);
                        fileName = _callCenterExportableReportHelper.CallQueueExcludedCustomerReportExport(callQueueExcludedCustomerReportModelFilter, orgRoleUser.UserId);
                        break;

                    case ExportableReportType.CallQueueCustomerReport:
                        var outboundCallQueueFilter = Newtonsoft.Json.JsonConvert.DeserializeObject <OutboundCallQueueFilter>(exportableReportsQueue.FilterData);
                        fileName = _callCenterExportableReportHelper.CallQueueCustomersReportExport(outboundCallQueueFilter, orgRoleUser.UserId);
                        break;

                    case ExportableReportType.CustomerWithNoEventsInAreaReport:
                        var customerWithNoEventsInAreaReportModelFilter = Newtonsoft.Json.JsonConvert.DeserializeObject <CustomerWithNoEventsInAreaReportModelFilter>(exportableReportsQueue.FilterData);
                        fileName = _callCenterExportableReportHelper.CustomerWithNoEventsInAreaReportExport(customerWithNoEventsInAreaReportModelFilter, orgRoleUser.UserId);
                        break;

                    case ExportableReportType.CallCenterCallReport:
                        var callCenterCallReportModelFilter = Newtonsoft.Json.JsonConvert.DeserializeObject <CallCenterCallReportModelFilter>(exportableReportsQueue.FilterData);
                        fileName = _callCenterExportableReportHelper.CallCenterCallReportExport(callCenterCallReportModelFilter, orgRoleUser.UserId);
                        break;

                    case ExportableReportType.ConfirmationReport:
                        var confirmationReportFilter = Newtonsoft.Json.JsonConvert.DeserializeObject <ConfirmationReportFilter>(exportableReportsQueue.FilterData);
                        fileName = _callCenterExportableReportHelper.ConfirmationReportExport(confirmationReportFilter, orgRoleUser.UserId);
                        break;

                    case ExportableReportType.CallSkippedReport:
                        var callSkippedFilter = Newtonsoft.Json.JsonConvert.DeserializeObject <CallSkippedReportFilter>(exportableReportsQueue.FilterData);
                        fileName = _callCenterExportableReportHelper.CallSkippedReportExport(callSkippedFilter, orgRoleUser.UserId);
                        break;

                    case ExportableReportType.PcpTrackingReport:
                        var pcpTrackingReportFilter = Newtonsoft.Json.JsonConvert.DeserializeObject <PcpTrackingReportFilter>(exportableReportsQueue.FilterData);
                        fileName = _schedulingExportableReportHelper.PcpTrackingReportExport(pcpTrackingReportFilter, orgRoleUser.UserId);
                        break;

                    case ExportableReportType.CustomerSchedule:
                        var customerScheduleModelFilter = Newtonsoft.Json.JsonConvert.DeserializeObject <CustomerScheduleModelFilter>(exportableReportsQueue.FilterData);
                        fileName = _schedulingExportableReportHelper.CustomerScheduleExport(customerScheduleModelFilter, orgRoleUser.UserId);
                        break;

                    case ExportableReportType.ExcludedCustomerReport:
                        var excludedCustomerReport = Newtonsoft.Json.JsonConvert.DeserializeObject <OutboundCallQueueFilter>(exportableReportsQueue.FilterData);
                        fileName = _callCenterExportableReportHelper.ExcludedCusomerReportExport(excludedCustomerReport, orgRoleUser.UserId);
                        break;

                    case ExportableReportType.DisqualifiedTestReport:
                        var disqualifiedTestReportFilter = Newtonsoft.Json.JsonConvert.DeserializeObject <DisqualifiedTestReportFilter>(exportableReportsQueue.FilterData);
                        fileName = _medicalExportableReportHelper.DisqualifiedTestReportExport(disqualifiedTestReportFilter, orgRoleUser.UserId);
                        break;

                    case ExportableReportType.PreAssessmentReport:
                        var preAssessmentReportFilter = Newtonsoft.Json.JsonConvert.DeserializeObject <PreAssessmentReportFilter>(exportableReportsQueue.FilterData);
                        fileName = _callCenterExportableReportHelper.PreAssessmentReportExport(preAssessmentReportFilter, orgRoleUser.UserId);
                        break;
                    }

                    SaveFile(exportableReportsQueue, fileName);
                    SendNotification(user, reportType.GetDescription(), orgRoleUser.UserId, exportableReportsQueue.RequestedBy);

                    _logger.Info("Report :" + reportType.GetDescription() + " Requested by " + user.NameAsString + " Generated Successfully.");
                }
                else
                {
                    _logger.Info(string.Format("Call Upload Parser can not be called as time of day is {0}", timeOfDay));
                }
            }
            catch (Exception ex)
            {
                if (exportableReportsQueue != null)
                {
                    UpdateExportReportEndTimeAndStaus(exportableReportsQueue, (long)ExportableReportStatus.Failed);
                }

                _logger.Error("ex " + ex.Message + " stack trace: " + ex.StackTrace);
            }
        }
Example #5
0
 private void UpdateExportReportEndTimeAndStaus(ExportableReportsQueue exportableReportsQueue, long statusId)
 {
     exportableReportsQueue.EndedOn  = DateTime.Now;
     exportableReportsQueue.StatusId = statusId;
     _exportableReportsQueueRepository.Save(exportableReportsQueue);
 }
Example #6
0
 private void UpdateExportReportStartTimeAndStaus(ExportableReportsQueue exportableReportsQueue)
 {
     exportableReportsQueue.StartedOn = DateTime.Now;
     exportableReportsQueue.StatusId  = (long)ExportableReportStatus.InProgress;
     _exportableReportsQueueRepository.Save(exportableReportsQueue);
 }