예제 #1
0
        public async Task <IActionResult> CalculateAsync()
        {
            var            data    = JsonConvert.DeserializeObject <RequestHoursVM>((string)TempData["modelData"]);
            ReportVM       model   = null;
            RequestHoursAM request = new RequestHoursAM {
                Identification = data.Identification, Week = data.Week
            };
            var apiEndpoint = Configuration["ApiEndpoint"];
            var apiClient   = new HttpClient();

            HttpContent content  = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
            var         response = await apiClient.PostAsync(apiEndpoint + "/api/Report/CalculateHours", content);

            if (response.IsSuccessStatusCode)
            {
                var strJson = await response.Content.ReadAsStringAsync();

                var deserialize = JsonConvert.DeserializeObject <ReportAM>(strJson);
                model = new ReportVM
                {
                    NormalHours    = deserialize.NormalHours,
                    SundayHours    = deserialize.SundayHours,
                    NightHours     = deserialize.NightHours,
                    NormalOvertime = deserialize.NormalOvertime,
                    NightOvertime  = deserialize.NightOvertime,
                    SundayOvertime = deserialize.SundayOvertime
                };
            }

            return(View(model));
        }
        public ReportAM CalculateHours([FromBody] RequestHoursAM data)
        {
            try
            {
                ReportAM report   = new ReportAM();
                var      workList = pServiceBO.Get(j => j.Person.Identification == data.Identification && j.WeekNumber == data.Week);

                if (workList != null && workList.Count > 0)
                {
                    foreach (PersonServicesAM work in workList.Where(j => j.StarDate.Value.DayOfWeek != DayOfWeek.Sunday))
                    {
                        TimeSpan diff = (work.EndDate.Value - work.StarDate.Value);
                        report.NormalHours += diff.TotalHours;
                    }

                    foreach (PersonServicesAM work in workList.Where(j => j.StarDate.Value.DayOfWeek == DayOfWeek.Sunday))
                    {
                        TimeSpan diff = (work.EndDate.Value - work.StarDate.Value);

                        if (report.NormalHours < 48)
                        {
                            report.SundayHours += diff.TotalHours;
                        }
                        else
                        {
                            report.SundayOvertime += diff.TotalHours;
                        }
                    }

                    return(report);
                }
                else
                {
                    return(new ReportAM());
                }
            }
            catch (Exception e)
            {
                logger.LogInformation("Error: {mess}", e);
                return(new ReportAM());
            }
        }