예제 #1
0
        private bool ProcessReportNumber(Report report)
        {
            // Nothing to Do.
            if (!string.IsNullOrWhiteSpace(report.Number))
            {
                return(true);
            }

            // Special Rule for Incident (If the Case Number is not blank, use it as the Incident Number.
            if (report.ModuleType == ModuleType.Incident && !string.IsNullOrWhiteSpace(report.CaseNumber))
            {
                _log.Debug(string.Concat("Using existing Case Number for Incident", report.Id));
                report.Number = report.CaseNumber;
                return(true);
            }

            try
            {
                _log.Info(string.Concat("Getting next number for ", report.ModuleType, " ", report.Id));

                // Get the next Number for the Report as defined by its Agency.
                var nextNumber = _numberProvider.GetNextNumber(report.AgencyId, report.ModuleType);

                // Set the Report Number
                report.Number = nextNumber;

                // Special Rule for Incident (If the case number is blank update it with the new Incident Number)
                if (report.ModuleType == ModuleType.Incident && string.IsNullOrWhiteSpace(report.CaseNumber))
                {
                    _log.Debug("Using generated Incident Number for Case Number");
                    report.CaseNumber = report.Number;
                }

                return(true);
            }
            catch (Exception ex)
            {
                _log.Error(ex);
                AddExceptionAsReportComment(report, ex);
                return(false);
            }
        }
예제 #2
0
 public string GetNext(Guid agencyId, ModuleType moduleType)
 {
     return(_controlNumberRepository.GetNextNumber(agencyId, moduleType));
 }