/// <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);
        }
Beispiel #2
0
        /// <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);
        }