Untitled

 avatar
unknown
plain_text
15 days ago
2.6 kB
4
Indexable
 public async Task SyncAISLogs()
        {
            // daily sync
            var date = DateTime.Today.ToString("yyyy-MM-dd HH:mm:ss");

            // passed to API
            using (HttpClient client = new HttpClient())
            {
                client.BaseAddress = new Uri(Constants.AISPaydayToday.BaseUrl);
                client.DefaultRequestHeaders.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(Constants.Common.JSONType));
                client.Timeout = TimeSpan.FromMinutes(5); // Set the timeout to 2 minutes
                var endPoint = string.Format(Constants.AISPaydayToday.SnycTimelogPayday, date);
                HttpResponseMessage responseMessage = await client.GetAsync(endPoint);

                if (responseMessage.IsSuccessStatusCode)
                {
                    string objResp = responseMessage.Content.ReadAsStringAsync().Result;
                    List<TimelogsToPayDay> logsAIS = JsonConvert.DeserializeObject<List<TimelogsToPayDay>>(objResp);
                    if (logsAIS.Count > 0)
                    {
                        // pass to the service;
                         var validatedTimelogs = _timelogsService.TimelogAIS(logsAIS);
                        if (validatedTimelogs.SucceededReadLines.Count > 0)
                        {
                            var timelogsList = validatedTimelogs.SucceededReadLines;
                            var groupLogsByCompanies = timelogsList.GroupBy(x => x.Employee.CompanyID)
                                                                .Select(data => new
                                                                {
                                                                    CompanyID = data.Key,
                                                                    timelogs = data.ToList()
                                                                });
                            foreach (var item in groupLogsByCompanies)
                            {
                                //get first log since all employee after group has the same company
                                var getFirstLog = item.timelogs.FirstOrDefault();
                                var companySetup = await GetCompanySetupAsync(getFirstLog.EmployeeID, _employeeService);
                                _timelogsService.BulkCreateTxt(item.timelogs, companySetup);
                            }
                        }
                    }

                }
            }
        }
Leave a Comment