Beispiel #1
0
        private void SendRequestToSD(SdKoersel.AnsaettelseKoerselOpretInputType request, DriveReport report)
        {
            try
            {
                var response = _sdClient.SendRequest(request);
            }
            catch (Exception e)
            {
                _logger.ErrorSd($"{this.GetType().ToString()}, sendDataToSd(), Error when sending data to SD, Servicenummer = {report.Employment.EmploymentId}, EmploymentId = {report.EmploymentId}, Report = {report.Id}", e);
                return;
            }

            report.Status = ReportStatus.Invoiced;

            var epoch     = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
            var deltaTime = DateTime.Now.ToUniversalTime() - epoch;

            report.ProcessedDateTimestamp = (long)deltaTime.TotalSeconds;

            try
            {
                _driveReportRepo.Save();
            }
            catch (Exception e)
            {
                _logger.ErrorSd($"{this.GetType().ToString()}, sendDataToSd(), Error when saving invoice status for report after sending to SD. Report has been sent, but status has NOT been changed, Servicenummer = {report.Employment.EmploymentId}, EmploymentId = {report.EmploymentId}, Report = {report.Id}", e);
                _logger.LogForAdmin($"En indberetning er blevet sendt til udbetaling via SD Løn, men dens status er ikke blevet ændret i OS2 Indberetning. Den vil dermed potentielt kunne sendes til udbetaling igen. Det drejer sig om medarbejder: {report.Person.Initials}, og indberetning med med ID: {report.Id}, kørt den: {new System.DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(report.DriveDateTimestamp)}");
            }
        }
Beispiel #2
0
        private void SendDataToSD()
        {
            _logger.ErrorSd($"{this.GetType().ToString()}, SendDataToSD(), --------- TRANSFER TO SD STARTED -----------");

            var reportsToInvoice = _reportGenerator.ReceiveReportsToInvoiceSD();

            _logger.ErrorSd($"{this.GetType().ToString()}, SendDataToSD(), Number of reports to invoice: {reportsToInvoice.Count}");

            foreach (DriveReport report in reportsToInvoice)
            {
                var requestData = new SdKoersel.AnsaettelseKoerselOpretInputType();
                try
                {
                    requestData = PrepareRequestData(report);
                }
                catch (SdConfigException se)
                {
                    throw se; // This error is a general config error, and must break the loop.
                }
                catch (Exception e)
                {
                    _logger.ErrorSd($"{this.GetType().ToString()}, sendDataToSd(), Error when preparing data, Servicenummer = {report.Employment.EmploymentId}, EmploymentId = {report.EmploymentId}, Report = {report.Id}", e);
                    continue;
                }

                SendRequestToSD(requestData, report);
            }

            var reportsToInvoiceWithZeroDistance = _driveReportRepo.AsQueryable().Where(x => x.Status == ReportStatus.Accepted && x.Distance == 0).ToList();

            foreach (DriveReport report in reportsToInvoiceWithZeroDistance)
            {
                report.Status = ReportStatus.Invoiced;

                var epoch     = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
                var deltaTime = DateTime.Now.ToUniversalTime() - epoch;
                report.ProcessedDateTimestamp = (long)deltaTime.TotalSeconds;

                try
                {
                    _driveReportRepo.Save();
                }
                catch (Exception e)
                {
                    _logger.ErrorSd($"{this.GetType().ToString()}, sendDataToSd(), Error when saving invoice status for report with distance = 0", e);
                }
            }

            _logger.ErrorSd($"{this.GetType().ToString()}, SendDataToSD(), --------- TRANSFER TO SD FINISHED -----------");
        }
Beispiel #3
0
        private SdKoersel.AnsaettelseKoerselOpretInputType PrepareRequestData(DriveReport report)
        {
            SdKoersel.AnsaettelseKoerselOpretInputType opretInputType = new SdKoersel.AnsaettelseKoerselOpretInputType();

            opretInputType.Item = _customSettings.SdInstitutionNumber; // InstitutionIdentifikator
            if (string.IsNullOrEmpty(opretInputType.Item))
            {
                throw new SdConfigException("PROTECTED_institutionNumber må ikke være tom");
            }
            opretInputType.ItemElementName     = SdKoersel.ItemChoiceType.InstitutionIdentifikator;
            opretInputType.BrugerIdentifikator = report.ApprovedBy.CprNumber;
            opretInputType.Item1 = report.Employment.EmploymentId; // AnsaettelseIdentifikator
            opretInputType.RegistreringTypeIdentifikator = report.TFCode;
            opretInputType.GodkendtIndikator             = true;
            opretInputType.KoerselDato = new System.DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(report.DriveDateTimestamp).ToLocalTime();
            opretInputType.RegistreringNummerIdentifikator = report.LicensePlate;
            opretInputType.KontrolleretIndikator           = true;
            opretInputType.KilometerMaal                 = Convert.ToDecimal(report.Distance);
            opretInputType.Regel60DageIndikator          = false;
            opretInputType.DokumentationEksternIndikator = true;

            return(opretInputType);
        }