internal static Approval PatchApproval(Approval approval, string status, string comments)
        {
            Approval resultApproval = new Approval();
            var releaseServiceUrl = getReleaseServiceUrl();
            var query = string.Format(Constants.API_PATCH_APPROVAL, releaseServiceUrl, ProjectContext.GetProjectContext().Project, approval.Id);
            var jsonDataForPostCall = string.Format(Constants.API_POST_BODY_APPROVALS, status, comments);
            try
            {
                var requestContent = new StringContent(jsonDataForPostCall, Encoding.UTF8, "application/json");

                
                var result = LoginService.VSTSHttpClient.PatchAsync(new Uri(query),requestContent).Result;
                result.EnsureSuccessStatusCode();

                var responseWit = result.Content.ReadAsStringAsync().Result;

                dynamic json = JsonConvert.DeserializeObject(responseWit);

                resultApproval = getAnApprovalFromJson(json);
            }
            catch
            {
                resultApproval = null;
            }
            return resultApproval;
        }
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            if (e == null) return;

            approval = (Approval)e.Parameter;

            if (approval == null) return;

            SetDefaultUI();

            headerTB.Text = approval.ReleaseEnvironment.Name + " ( " + approval.Release.Name +" )";

            if (!approval.Status.ToLowerInvariant().Equals("pending"))
            {
                noProCommentsTB.Visibility = Visibility.Collapsed;
            }

            approvalCardSP.DataContext = approval;
        }
        private void approveBtn_Click(object sender, RoutedEventArgs e)
        {
            if(sender == null)
            {
                return;
            }

            string comments = getApprovalComments();
            string status = "approved";


            ShowProgressBar();
            Approval responseApproval;
            Task.Factory.StartNew(() =>
            {
                responseApproval = VSTSService.PatchApproval(approval, status, comments);

                if (responseApproval != null)
                {
                    approval = responseApproval;
                }
            }).ContinueWith(async (Task t) =>
            {
                await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    approvalCardSP.DataContext = approval;
                   
                    if (!approval.Status.ToLowerInvariant().Equals("pending"))
                    {
                        noProCommentsTB.Visibility = Visibility.Collapsed;
                    }
                    HideProgressBar();
                });
            });


        }
        private void rejectBtn_Click(object sender, RoutedEventArgs e)
        {
            if (sender == null)
            {
                return;
            }

            string comments = getApprovalComments();
            string status = "rejected";

            ShowProgressBar();
            Approval responseApproval;
            Task.Factory.StartNew(() =>
            {
                responseApproval = VSTSService.PatchApproval(approval, status, comments);

                if (responseApproval != null)
                {
                    approval = responseApproval;
                }
            }).ContinueWith(async (Task t) =>
            {
                await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    approvalCardSP.DataContext = approval;
                    HideProgressBar();
                });
            });
        }
        private static Approval getAnApprovalFromJson(dynamic approvalBody)
        {
            Approval approval = new Approval
            {
                Id = approvalBody.id,
                ApprovalType = approvalBody.approvalType,
                Status = approvalBody.status,
                Comments = approvalBody.comments
            };

            if (approvalBody.approver != null)
            {
                approval.Approver = getIdentityFronJson(approvalBody.approver);
            }

            if (approvalBody.createdOn != null)
            {
                approval.CreatedOn = approvalBody.createdOn;
            }

            if (approvalBody.modifiedOn != null)
            {
                approval.ModifiedOn = approvalBody.modifiedOn;
            }


            if (approvalBody.releaseDefinition != null)
            {
                approval.ReleaseDefinition = new ReleaseDefinition
                {
                    Id = approvalBody.releaseDefinition.id,
                    Name = approvalBody.releaseDefinition.name
                };
            }

            if (approvalBody.release != null)
            {
                approval.Release = new Release
                {
                    Id = approvalBody.release.id,
                    Name = approvalBody.release.name
                };
            }

            if (approvalBody.releaseEnvironment != null)
            {
                approval.ReleaseEnvironment = new Release.REnvironment
                {
                    Id = approvalBody.releaseEnvironment.id,
                    Name = approvalBody.releaseEnvironment.name
                };
            }

            return approval;
        }