public void SetAbsence(IList <KMDAbsenceReport> absenceReports) { using (var webService = new SetAbsenceAttendance.SetAbsenceAttendance_OS_SIClient("HTTPS_Port")) { var certName = ConfigurationManager.AppSettings["PROTECTED_CERTIFICATE_NAME"]; webService.ClientCredentials.ClientCertificate.SetCertificate(System.Security.Cryptography.X509Certificates.StoreLocation.LocalMachine, System.Security.Cryptography.X509Certificates.StoreName.My, System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectName, certName); foreach (var report in absenceReports) { var request = new SetAbsenceAttendance.SetAbsenceAttendanceRequest(); request.StartDate = report.StartDate.ToString("yyyy-MM-dd"); request.StartTime = report.StartTime?.ToString(@"hh\:mm\:ss"); request.EndDate = report.EndDate.ToString("yyyy-MM-dd"); request.EndTime = report.EndTime?.ToString(@"hh\:mm\:ss"); request.OriginalStartDate = report.OldStartDate?.ToString("yyyy-MM-dd"); request.OriginalStartTime = report.OldEndTime?.ToString(@"hh\:mm\:ss"); request.OriginalEndDate = report.OldEndDate?.ToString("yyyy-MM-dd"); request.OriginalEndTime = report.OldEndTime?.ToString(@"hh\:mm\:ss"); request.PersonnelNumber = report.EmploymentId.ToString(); request.Operation = report.KmdAbsenceOperation.AsString(); request.AdditionalData = report.ExtraData; switch (report.Type) { case VacationType.Regular: request.AbsenceAttendanceType = "FE"; request.OriginalAbsenceAttendanceType = "FE"; break; case VacationType.SixthVacationWeek: request.AbsenceAttendanceType = "6F"; request.OriginalAbsenceAttendanceType = "6F"; break; case VacationType.Senior: request.AbsenceAttendanceType = "SO"; request.OriginalAbsenceAttendanceType = "SO"; break; case VacationType.Care: request.AbsenceAttendanceType = "OS"; request.OriginalAbsenceAttendanceType = "OS"; break; default: throw new NotSupportedException(); } var response = webService.SetAbsenceAttendance_OS_SI(request); // If TYPE is empty, it succeeded if (response.ReturnStatus.StatusType == "" || response.ReturnStatus.StatusType == "S") { continue; } // Error occurred, cast exception containing error message. throw new KMDSetAbsenceFailedException(response.ReturnStatus.MessageText, request); } } }
public KMDSetAbsenceFailedException(string message, SetAbsenceAttendance.SetAbsenceAttendanceRequest request) : base(message) { Request = request; }
public void SetAbsence(IList <KMDAbsenceReport> absenceReports) { if (!Boolean.Parse(config["KMDVacationService:SetAbsenceAttendanceEnabled"])) { logger.LogWarning("KMDVacationService SetAbsenceAttendance is disabled. Not setting any absenceReports"); return; } var webService = new SetAbsenceAttendance.SetAbsenceAttendance_OS_SIClient(); var certificate = new X509Certificate2(config["KMDVacationService:CertificateFilename"], config["KMDVacationService:CertificatePassword"]); ((BasicHttpBinding)webService.Endpoint.Binding).Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate; webService.Endpoint.Address = new EndpointAddress(config["KMDVacationService:SetAbsenceAttendanceEndpoint"]); webService.Endpoint.EndpointBehaviors.Add(new LoggingBehavior(logger)); webService.ClientCredentials.ClientCertificate.Certificate = certificate; foreach (var report in absenceReports) { var request = new SetAbsenceAttendance.SetAbsenceAttendanceRequest(); request.StartDate = report.StartDate.ToString("yyyy-MM-dd"); request.StartTime = report.StartTime?.ToString(@"hh\:mm\:ss"); request.EndDate = report.EndDate.ToString("yyyy-MM-dd"); request.EndTime = report.EndTime?.ToString(@"hh\:mm\:ss"); request.OriginalStartDate = report.OldStartDate?.ToString("yyyy-MM-dd"); request.OriginalStartTime = report.OldEndTime?.ToString(@"hh\:mm\:ss"); request.OriginalEndDate = report.OldEndDate?.ToString("yyyy-MM-dd"); request.OriginalEndTime = report.OldEndTime?.ToString(@"hh\:mm\:ss"); request.PersonnelNumber = report.EmploymentId.ToString(); request.Operation = report.KmdAbsenceOperation.AsString(); request.AdditionalData = report.ExtraData; switch (report.Type) { case VacationType.Regular: request.AbsenceAttendanceType = "FE"; request.OriginalAbsenceAttendanceType = "FE"; break; case VacationType.SixthVacationWeek: request.AbsenceAttendanceType = "6F"; request.OriginalAbsenceAttendanceType = "6F"; break; case VacationType.Senior: request.AbsenceAttendanceType = config["KMDVacationService:SeniorAbsenceAttendanceType"]; request.OriginalAbsenceAttendanceType = config["KMDVacationService:SeniorAbsenceAttendanceType"]; break; case VacationType.Care: request.AbsenceAttendanceType = "OS"; request.OriginalAbsenceAttendanceType = "OS"; break; default: throw new NotSupportedException(); } var response = webService.SetAbsenceAttendance_OS_SI(request); // If TYPE is empty, it succeeded if (response.ReturnStatus.StatusType == "" || response.ReturnStatus.StatusType == "S") { continue; } // Error occurred, cast exception containing error message. throw new KMDSetAbsenceFailedException(response.ReturnStatus.MessageText, request); } }