public async Task ExecuteTestAsync() { Console.WriteLine("<Controller:Execute> Starting"); var mailBodyList = new List <MailBodyDto>(); var tenantCompanies = await GetTenantCompanies(); if (tenantCompanies.Count == 0) { return; } PersonalDataResponse personalData = null; using (StreamReader r = new StreamReader("C:\\Test\\HrLink\\Employee_response.json")) { string json = r.ReadToEnd(); personalData = JsonConvert.DeserializeObject <PersonalDataResponse>(json); //var persons = personalDataResponse.SoapenvEnvelope.Body.ApiVersionPersons.Persons; } JobDataResponse jobData = null; using (StreamReader r = new StreamReader("C:\\Test\\HRLink\\Job_response.json")) { string json = r.ReadToEnd(); jobData = JsonConvert.DeserializeObject <JobDataResponse>(json); //var jobs = jDataResponse.SoapenvEnvelope.Body.ApiVersionJobs.JobDataWithCompList; } var defaultTenant = tenantCompanies.First(); var defaultCompany = tenantCompanies.First().Companies.First(); var imported = await _userHelper.ImportAsync(defaultTenant.Api, defaultCompany, personalData, jobData, mailBodyList); Console.WriteLine("<Controller:Execute> Ending"); }
public async Task <bool> ImportAsync(ApiDto api, Dto.CompanyDto company, PersonalDataResponse personalData, JobDataResponse jobData, List <MailBodyDto> mailBodyList) { var persons = personalData == null ? new List <Person>() : personalData.SoapenvEnvelope.Body.ApiVersionPersons.Persons.ToList(); var jobs = jobData == null ? new List <JobDataWithComp>() : jobData.SoapenvEnvelope.Body.ApiVersionJobs.JobDataWithCompList.ToList(); int count = 1; var httpClient = HttpClientHelper.Get(api); var imported = true; foreach (var person in persons) { var progressMessage = $"Importing {count++} of {persons.Count}."; var userId = Guid.Empty; var externalId = person.Emplid.Text.ToString(); var userName = person.SubNames.NameDisplay.Text; var job = jobs.FirstOrDefault(j => j.Job.Emplid.Text.ToString(CultureInfo.InvariantCulture) == externalId); if (job == null) { await LogHelper.SaveLogAsync(httpClient, company.Code, company.CompanyId, Updater.MyStatusId, "User", userName, $"-- Not Imported - Job data must exists for employeeid {externalId} --", progressMessage, JsonConvert.SerializeObject(person)); imported = false; continue; } var department = await GetDepartmentAsync(httpClient, company.CompanyId, job.Department.Deptid.Text); if (department == null) { await ApiHelper.SaveLogAsync(httpClient, company.Code, company.CompanyId, Updater.MyStatusId, "User", userName, $"Department does not exists for external id {job.Department.Deptid.Text}.", progressMessage, JsonConvert.SerializeObject(person)); continue; } var isActive = job.Job.EmplStatus.Text == "A"; var documentUserFieldValueDtos = await GetUserIdByHrLinkIdAsync(httpClient, person.Emplid.Text.ToString()); if (documentUserFieldValueDtos.Count > 1) { await ApiHelper.SaveLogAsync(httpClient, company.Code, company.CompanyId, Updater.MyStatusId, "User", userName, $"Exists several users with {person.Emplid.Text} HRLinkID.", progressMessage, JsonConvert.SerializeObject(person)); return(false); } if (documentUserFieldValueDtos.Count == 1) { var user = await GetUserAsync(httpClient, documentUserFieldValueDtos[0].DocumentId); externalId = user.ExternalId; userId = user.Id; } else { externalId = (externalId.Length == 10 && externalId.Substring(2, 2) == "00") ? externalId.Remove(2, 2) : externalId; } var employeeDto = await SaveEmployeeAsync(httpClient, company, externalId, userName, isActive, progressMessage, mailBodyList); if (employeeDto == null) { imported = false; continue; } var savedUserTypology = await SaveUserTypologyAsync(httpClient, company, department.Id, job, progressMessage); if (!savedUserTypology) { imported = false; continue; } var savedUserDto = await SaveUserAsync(httpClient, company, userId, externalId, userName, isActive, person, job, employeeDto.Id, progressMessage, mailBodyList); if (savedUserDto == null) { imported = false; continue; } var documentUserFieldValueBatchPutModel = new DocumentUserFieldValueBatchPutModel { DocumentId = savedUserDto.Id, DocumentTypeName = "User", DocumentUserFieldValues = new List <DocumentUserFieldValue>() }; documentUserFieldValueBatchPutModel.DocumentUserFieldValues.Add(new DocumentUserFieldValue { ColumnName = "HRLinkId", Value = person.Emplid.Text.ToString(), ColumnDataTypeId = (int)ColumnDataType.Varchar50 }); await SaveDocumentUserFieldValueAsync(httpClient, company, documentUserFieldValueBatchPutModel, progressMessage); } return(imported); }
public async Task <bool> ImportAsync(ApiDto apiDto, Dto.CompanyDto company, PersonalDataResponse personalData, JobDataResponse jobData, List <MailBodyDto> mailBodyList) { var persons = personalData == null ? new List <Person>() : personalData.SoapenvEnvelope.Body.ApiVersionPersons.Persons.ToList(); var jobs = jobData == null ? new List <JobDataWithComp>() : jobData.SoapenvEnvelope.Body.ApiVersionJobs.JobDataWithCompList.ToList(); int count = 1; var httpClient = HttpClientHelper.Get(apiDto); var imported = true; foreach (var person in persons) { var progressMessage = $"Importing {count++} of {persons.Count}."; var externalId = person.Emplid.Text; var userName = person.SubNames.NameDisplay.Text; var job = jobs.FirstOrDefault(j => j.Job.Emplid.Text == externalId); if (job == null) { await LogHelper.SaveLogAsync(apiDto, company.Code, company.CompanyId, Updater.MyStatusId, "User", userName, $"-- Not Imported - Job data must exists for employeeid {externalId} --", progressMessage, JsonConvert.SerializeObject(person)); imported = false; continue; } var department = await GetDepartmentAsync(httpClient, company.CompanyId, job.Department.Deptid.Text); if (department == null) { await ApiHelper.SaveLogAsync(apiDto, company.Code, company.CompanyId, Updater.MyStatusId, "User", userName, $"Department does not exists for external id {job.Department.Deptid.Text}.", progressMessage, JsonConvert.SerializeObject(person)); continue; } var isActive = job.Job.EmplStatus.Text == "A"; var employeeDto = await SaveEmployeeAsync(httpClient, company, externalId, userName, isActive, progressMessage, mailBodyList); if (employeeDto == null) { imported = false; continue; } var savedUserTypology = await SaveUserTypologyAsync(httpClient, company, department.Id, job, progressMessage); if (!savedUserTypology) { imported = false; continue; } var savedUserDto = await SaveUserAsync(httpClient, company, externalId, userName, isActive, person, job, employeeDto.Id, progressMessage, mailBodyList); if (savedUserDto == null) { imported = false; continue; } } return(imported); }