/// <summary>
        /// Updates the leave request.
        /// </summary>
        /// <param name="leaveRequest">The leave request.</param>
        public async Task<LeaveResultCollection> UpdateLeaveRequest(LeaveRequest leaveRequest, string accessToken)
        {
            if (!string.IsNullOrEmpty(accessToken))
            {
                var authenticationHeaderValue = new AuthenticationHeaderValue(AuthorizationScheme, accessToken);
                return await Task.Run(() => this.httpClientHelper.PostData<LeaveResultCollection, LeaveRequest>(this.GetUri(LeaveRequestResource), leaveRequest, authenticationHeaderValue));
            }

            return null;
        }
        /// <summary>
        /// Maps the leave.
        /// </summary>
        /// <param name="leaveRequest">The leave request.</param>
        private void MapLeave(LeaveRequest leaveRequest)
        {
            leaveRequest.Leave = new Leave();
            leaveRequest.Leave.Comment = string.Empty;
            leaveRequest.Leave.DeveloperIds = ApplicationData.User.UserId;
            leaveRequest.Leave.RequestedByDeveloperId = ApplicationData.User.UserId;
            leaveRequest.Leave.IsUnplanned = false;

            leaveRequest.Leave.Type = radioLeaveTypePersonal.IsChecked.HasValue && radioLeaveTypePersonal.IsChecked.Value ? LeaveTypePersonal : LeaveTypeSick;
        }
        /// <summary>
        /// Maps the leave request.
        /// </summary>
        /// <param name="leaveRequest">The leave request.</param>
        private void MapLeaveRequest(LeaveRequest leaveRequest)
        {
            var startDateType = leaveParams.DayTypes.Where(dayType => dayType.Id == (fromDayTypeListPicker.SelectedItem as TypeInfo).Id).FirstOrDefault().Id;

            var endDateType = 0;
            if (toDayTypeListPicker.IsEnabled)
            {
                endDateType = leaveParams.DayTypes.Where(dayTypesInitialized => dayTypesInitialized.Id == (toDayTypeListPicker.SelectedItem as TypeInfo).Id).FirstOrDefault().Id;
            }
            else
            {
                endDateType = startDateType;
            }

            leaveRequest.StartDate = ((DateTime)fromDatePicker.Value).ToString(CultureInfoUS);
            leaveRequest.StartDateType = startDateType;
            leaveRequest.EndDate = ((DateTime)toDatePicker.Value).ToString(CultureInfoUS);
            leaveRequest.EndDateType = endDateType;
        }
        /// <summary>
        /// Handles the Click event of the btnApplyLeave control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="RoutedEventArgs"/> instance containing the event data.</param>
        private async void btnApplyLeave_Click(object sender, RoutedEventArgs e)
        {
            progressMask.Show();

            try
            {
                if (NetworkInterface.GetIsNetworkAvailable())
                {
                    var isValidDateSelection = this.leaveRequestRepository.IsValidDateRange(Convert.ToDateTime(fromDatePicker.Value, CultureInfoUS), Convert.ToDateTime(toDatePicker.Value, CultureInfoUS));

                    if (leaveCount == null)
                    {
                        SetLeaveCount();
                    }

                    if (isValidDateSelection && leaveCount.Value > 0)
                    {
                        LeaveRequest leaveRequest = new LeaveRequest();
                        MapLeave(leaveRequest);
                        MapLeaveRequest(leaveRequest);
                        var leaveResult = await leaveRequestRepository.UpdateLeaveRequest(leaveRequest, ApplicationData.User.Token);
                        if (leaveResult != null && leaveResult.Count > 0)
                        {
                            ShowMessageBox("Insight", "You have already applied for selected dates.");
                        }
                        else
                        {
                            ////Toast.MakeText(this, GetString(Resource.String.LeaveRequestSent), ToastLength.Long).Show();
                            if (this.NavigationService.CanGoBack)
                            {
                                PhoneApplicationService.Current.State["ToastNotification"] = "Leave request sent.";
                                this.NavigationService.GoBack();
                            }
                        }
                    }
                    else
                    {
                        ShowMessageBox("Insight", "Please select valid dates.");
                    }
                }
            }
            catch (Exception ex)
            {
                ShowMessageBox("Insight", "Error in applying leave.");
            }
            finally
            {
                progressMask.Hide();
            }
        }
 private void MapLeave(LeaveRequest leaveRequest)
 {
     leaveRequest.Leave = new Leave();
     leaveRequest.Leave.Comment = txtLeaveReason.Text;
     leaveRequest.Leave.DeveloperId = 8; ////ApplicationData.User.UserId;
     leaveRequest.Leave.IsUnplanned = false;
 }
 private void MapLeaveRequest(LeaveRequest leaveRequest)
 {
     leaveRequest.StartDate = fromDate.Date.ToString();
     leaveRequest.StartDateType = 1;
     leaveRequest.EndDate = toDate.Date.ToString();
     leaveRequest.EndDateType = 2;
 }
 private void applyButton_Clicked(object sender, EventArgs e)
 {
     LeaveRequest leaveRequest = new LeaveRequest();
     MapLeave(leaveRequest);
     MapLeaveRequest(leaveRequest);
     leaveRequestRepository.UpdateLeaveRequest(leaveRequest);
 }
        /// <summary>
        /// Maps the leave.
        /// </summary>
        /// <param name="leaveRequest">The leave request.</param>
        private void MapLeave(LeaveRequest leaveRequest)
        {
            leaveRequest.Leave = new Leave();
            leaveRequest.Leave.Comment = string.Empty;
            leaveRequest.Leave.DeveloperIds = ApplicationData.User.UserId;
            leaveRequest.Leave.RequestedByDeveloperId = ApplicationData.User.UserId;
            leaveRequest.Leave.ApplicationType = ApplicationType.Android;
            leaveRequest.Leave.VersionNumber = GetVersionNumber();
            leaveRequest.Leave.IsUnplanned = false;

            leaveRequest.Leave.Type = rdbPersonal.Checked ? LeaveTypePersonal : LeaveTypeSick;
        }
        /// <summary>
        /// Maps the leave request.
        /// </summary>
        /// <param name="leaveRequest">The leave request.</param>
        private void MapLeaveRequest(LeaveRequest leaveRequest)
        {
            var spinnerFrom = this.FindViewById<Spinner>(Resource.Id.spnFrom);

            var spinnerFromValue = leaveParams.DayTypes[(int)spinnerFrom.SelectedItemId].Id;

            var spinnerToValue = 0;
            if (toSpinner.Enabled)
            {
                spinnerToValue = leaveParams.DayTypes[(int)toSpinner.SelectedItemId].Id;
            }
            else
            {
                spinnerToValue = spinnerFromValue;
            }

            leaveRequest.StartDate = fromDate.Text;
            leaveRequest.StartDateType = spinnerFromValue;
            leaveRequest.EndDate = toDate.Text;
            leaveRequest.EndDateType = spinnerToValue;
        }
        /// <summary>
        /// Handles the Click event of the applyButton control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        private async void applyButton_Click(object sender, EventArgs e)
        {
            var progress = ProgressDialog.Show(this, GetString(Resource.String.ApplyingLeave), GetString(Resource.String.PleaseWait), true);
            try
            {
                if (!IfNetworkAvailable())
                {
                    progress.Dismiss();
                    return;
                }
                var isValidDateSelection = this.leaveRequestRepository.IsValidDateRange(Convert.ToDateTime(fromDate.Text, us), Convert.ToDateTime(toDate.Text, us));

                if (leaveCount == null)
                {
                    SetLeaveCount();
                }

                if (isValidDateSelection && leaveCount.Value > 0)
                {
                    LeaveRequest leaveRequest = new LeaveRequest();
                    MapLeave(leaveRequest);
                    MapLeaveRequest(leaveRequest);
                    var leaveResult = await leaveRequestRepository.UpdateLeaveRequest(leaveRequest, ApplicationData.User.Token);
                    if (leaveResult.Count > 0)
                    {
                        AlertMessage(GetString(Resource.String.Error), GetString(Resource.String.AlreadyApplied));
                    }
                    else
                    {
                        Toast.MakeText(this, GetString(Resource.String.LeaveRequestSent), ToastLength.Long).Show();
                        StartActivity(typeof(MainActivity));
                    }
                }
                else
                {
                    AlertMessage(GetString(Resource.String.Error), GetString(Resource.String.ValidateDates));
                }

                progress.Dismiss();
            }
            catch (Exception ex)
            {
                AlertMessage(GetString(Resource.String.Error), GetString(Resource.String.LeaveError));
                progress.Dismiss();
            }
        }
 public void UpdateLeaveRequest(LeaveRequest leaveRequest)
 {
     this.httpClientHelper.PostResponseData(this.GetUri(LeaveRequestResource), leaveRequest);
 }