/// <summary> /// Send advanced time off request to Kronos API and get response. /// </summary> /// <param name="tenantId">Tensnt ID.</param> /// <param name="jSession">J Session.</param> /// <param name="personNumber">Person Number.</param> /// <param name="obj">Submitted values from employee.</param> /// <returns>Time of add response.</returns> public async Task <TimeOffAddResponse.Response> AdvancedTimeOffRequest(string tenantId, string jSession, string personNumber, AdvancedTimeOff obj) { string xmlTimeOffRequest = this.CreateAddAdvancedTimeOffRequest(personNumber, obj); TenantMapEntity tenantMapEntity = await this.azureTableStorageHelper.ExecuteQueryUsingPointQueryAsync <TenantMapEntity>(Constants.ActivityChannelId, tenantId); var tupleResponse = await ApiHelper.Instance.SendSoapPostRequest(tenantMapEntity.EndpointUrl, ApiConstants.SoapEnvOpen, xmlTimeOffRequest, ApiConstants.SoapEnvClose, jSession); TimeOffAddResponse.Response timeOffResponse = this.ProcessResponse(tupleResponse.Item1); return(timeOffResponse); }
/// <summary> /// show next vacation card. /// </summary> /// <param name="context">dialog context.</param> /// <param name="obj">time off data.</param> /// <returns>vacation card.</returns> public async Task ShowVacationListCard(IDialogContext context, TimeOffResponse.Response obj) { var replyMessage = context.MakeMessage(); string datePeriod = string.Empty; HeroCard card = new HeroCard(); StringBuilder str = new StringBuilder(); List <Attachment> attachments = new List <Attachment>(); var items = obj.EmployeeRequestMgm.RequestItem.GlobalTimeOffRequestItms.Where(w => w.StatusName == "APPROVED" || w.StatusName == "SUBMITTED").ToList(); DateTime startDate; foreach (var item in items) { var sdt = item.TimeOffPeriodsList.TimeOffPerd.FirstOrDefault().StartDate; var edt = item.TimeOffPeriodsList.TimeOffPerd.FirstOrDefault().EndDate; DateTime.TryParse(sdt, out startDate); DateTime.TryParse(edt, out DateTime endDate); endDate = endDate.AddHours(23); endDate = endDate.AddMinutes(59); item.TimeOffPeriodsList.TimeOffPerd.FirstOrDefault().sdt = startDate; item.TimeOffPeriodsList.TimeOffPerd.FirstOrDefault().edt = endDate; } items = items.OrderBy(w => w.TimeOffPeriodsList.TimeOffPerd.FirstOrDefault().sdt).ToList(); int count = (int)Math.Ceiling((double)items.Count / 10); count = count > 10 ? 10 : count; for (int i = 0; i < count; i++) { IList <EmployeeGlobalTimeOffRequestItem> perPageList = this.GetPage(items, i, 10); foreach (EmployeeGlobalTimeOffRequestItem item in perPageList) { var status = item.StatusName; var duration = item.TimeOffPeriodsList.TimeOffPerd.FirstOrDefault().Duration; duration = duration == "full_day" ? "Full Day" : duration == "half_day" ? "Half Day" : duration == "first_half_day" ? "First Half Day" : "Hours"; var sdt = item.TimeOffPeriodsList.TimeOffPerd.FirstOrDefault().StartDate; var edt = item.TimeOffPeriodsList.TimeOffPerd.FirstOrDefault().EndDate; var paycode = item.TimeOffPeriodsList.TimeOffPerd.FirstOrDefault().PayCodeName; var days = (int)Math.Round(item.TimeOffPeriodsList.TimeOffPerd.FirstOrDefault().edt.Subtract(item.TimeOffPeriodsList.TimeOffPerd.FirstOrDefault().sdt).TotalDays, MidpointRounding.AwayFromZero); datePeriod = sdt == edt?item.TimeOffPeriodsList.TimeOffPerd.FirstOrDefault().sdt.ToString("MMM d, yyyy", CultureInfo.InvariantCulture) : item.TimeOffPeriodsList.TimeOffPerd.FirstOrDefault().sdt.ToString("MMM d, yyyy", CultureInfo.InvariantCulture) + " till " + item.TimeOffPeriodsList.TimeOffPerd.FirstOrDefault().edt.ToString("MMM d, yyyy", CultureInfo.InvariantCulture); str.Append($"<b>{datePeriod}</b>"); str.Append($" - {paycode} "); str.Append($" - {duration} "); str.Append($" - {status}<br/>"); } var heroCard = new HeroCard { Title = Resources.KronosResourceText.YourVacationRequests, Text = str.ToString(), }; str.Clear(); attachments.Add(heroCard.ToAttachment()); } if (count == 0) { var heroCard = new HeroCard { Title = Resources.KronosResourceText.YourVacationRequests, Text = Resources.KronosResourceText.NoVacationRequests, }; str.Clear(); attachments.Add(heroCard.ToAttachment()); } replyMessage.AttachmentLayout = AttachmentLayoutTypes.Carousel; replyMessage.Attachments = attachments; await context.PostAsync(replyMessage); }