public async Task <HttpRequestResult <PackingListViewInfoModel> > ValidClosePackingListAccessory(ValidClosePackingListAccessoryModel model)
 {
     return(await PostAsyncReceiveData <PackingListViewInfoModel, ValidClosePackingListAccessoryModel>(
                $"{ApiController}/valid-close-packing-list-accessory", model));
 }
        private async void ExecuteClosePackingListAccessory(ValidClosePackingListAccessoryModel model)
        {
            await _popupNavigation.PushAsync(new LoadingPopupPage());

            var packingListViewInfo = await _boardingAccessoryService.ValidClosePackingListAccessory(model);

            if (packingListViewInfo.Response != null && packingListViewInfo.Response.Valid)
            {
                packingListViewInfo =
                    await _boardingAccessoryService.ClosePackingListAccessory(Model.PackingListViewInfo.Id,
                                                                              new MacAddressModel(_wifiService.MacAddress));

                await _popupNavigation.PopAllAsync();

                if (packingListViewInfo.Response != null && packingListViewInfo.Response.Valid)
                {
                    await _notificationService.NotifyAsync("Romaneio fechado.", SoundEnum.Alert);

                    await NavigationService.GoBackAsync();
                }
                else
                {
                    var msg = ((packingListViewInfo.Response != null && !packingListViewInfo.Response.Valid)
                        ? packingListViewInfo.Response.ExceptionMessage
                        : "Não foi possivel completar a requisição.");

                    await _notificationService.NotifyAsync(msg, SoundEnum.Erros);
                }
            }
            else if (packingListViewInfo.Response != null && !packingListViewInfo.Response.Valid)
            {
                await _popupNavigation.PopAllAsync();

                switch (packingListViewInfo.Response.ExceptionCode)
                {
                case ExceptionCodeEnum.ExistsPacksUnread:
                    await _notificationService.NotifyAsync(packingListViewInfo.Response.ExceptionMessage, SoundEnum.Alert);

                    var ignoreBillOfLadings = model.IgnoreBillOfLadings.ToList();
                    ignoreBillOfLadings.Add(packingListViewInfo.Response.BillOfLadingId);
                    ClosePackingListAccessory(new ValidClosePackingListAccessoryModel(model.PackingListAccessoryId,
                                                                                      model.IgnoreAmountSealsSuperior, ignoreBillOfLadings, model.MacAddress));
                    break;

                case ExceptionCodeEnum.AmountSealsInferior:
                    if (await _notificationService.AskQuestionAsync(packingListViewInfo.Response.ExceptionMessage,
                                                                    SoundEnum.Alert))
                    {
                        await NavigationService.NavigateAsync("MaintenanceSealsInputPage",
                                                              new NavigationParameters()
                        {
                            { "Title", "Solicitação" },
                            {
                                "MaintenanceSealsInputModel",
                                new MaintenanceSealsInputModel()
                                {
                                    OnlyConference          = false,
                                    PackingListAccessoryId  = model.PackingListAccessoryId,
                                    TransportAccessoryDoors = packingListViewInfo.Response.TransportAccessoryDoors
                                }
                            },
                            { "CallBackData", new Dictionary <string, object>()
                              {
                                  { "Model", model }
                              } }
                        }
                                                              );
                    }
                    break;

                case ExceptionCodeEnum.PackinglistAccessoryEmpty:
                    await _notificationService.NotifyAsync(packingListViewInfo.Response.ExceptionMessage, SoundEnum.Alert);

                    packingListViewInfo = await _boardingAccessoryService.DeletePackingListAccessory(Model.PackingListViewInfo.Id);

                    if (packingListViewInfo.Response != null && !packingListViewInfo.Response.Valid)
                    {
                        await _notificationService.NotifyAsync(packingListViewInfo.Response.ExceptionMessage, SoundEnum.Erros);
                    }
                    break;

                default:
                    await _notificationService.NotifyAsync(packingListViewInfo.Response.ExceptionMessage, SoundEnum.Erros);

                    break;
                }
            }
            else
            {
                await _popupNavigation.PopAllAsync();

                await _notificationService.NotifyAsync("A requisição não pode ser completada.", SoundEnum.Erros);
            }
        }