/// <summary>
        /// The add error.
        /// </summary>
        /// <param name="message">
        /// The message.
        /// </param>
        /// <param name="title"></param>
        /// <param name="errorItems"></param>
        /// <param name="ex">
        /// The ex.
        /// </param>
        /// <param name="viewModelType"></param>
        /// <param name="errors"></param>
        /// <returns>
        /// The <see cref="string"/>.
        /// </returns>
        public List <ViewModelError> AddError(string description, ViewModelError.ErrorAction action, ViewModelError.ErrorSeverity severity, string title = null, List <string> errorItems = null, Exception ex = null, string viewModelType = null, ReadOnlyDictionary <string, ReadOnlyCollection <string> > errors = null)
        {
            var error = new ViewModelError(title, description, action, severity, errorItems, ex, viewModelType, errors);

            _errors.Add(error);
            return(_errors);
        }
        private async void DisplayError(ViewModelError error)
        {
            _spinner.HideLoading();

            if (_popupInputService.IsShowing)
            {
                return;
            }

            if (error.Exception is RestClient.Infrastructure.NetworkException)
            {
                DisplayNetworkError(error);
                return;
            }

            var showCuteError = _isError &&
                                error.Exception != null &&
                                !(error.Exception is HandledException || error.Exception is RankException);


            var popupErrorItems = error.ErrorItems?.ToDictionary(x => x);

            if (error.ErrorItems != null)
            {
                foreach (var errorItem in error.ErrorItems.ToDictionary(x => x))
                {
                    var validator = _navigationService.CurrentPage.FindByName($"{errorItem.Key}Validator");

                    if (validator == null)
                    {
                        continue;
                    }

                    validator.SetProperty("Text", errorItem.Value);
                    popupErrorItems?.Remove(errorItem.Key);
                }
            }

            var alert = new ErrorAlert()
            {
                Description   = showCuteError ? _errorDescription : error.Description,
                Title         = showCuteError ? _errorTitle : error.Title ?? error.Severity.ToString(),
                ErrorItems    = popupErrorItems,
                ViewModelType = this.GetType(),
                Severity      = error.Severity
            };

            if (string.IsNullOrWhiteSpace(alert.Title))
            {
                alert.Title = "Error";
            }

            await _popupInputService.ShowMessageOkAlertPopup(alert.Title, alert.Description, "OK");
        }
        private void DisplayNetworkError(ViewModelError error)
        {
            var alert = new ErrorAlert()
            {
                Description   = error.Description,
                Title         = _errorTitle,
                ViewModelType = this.GetType(),
                Severity      = ViewModelError.ErrorSeverity.Warning
            };

            ThreadingHelpers.InvokeOnMainThread(async() => await _popupInputService.ShowMessageOkAlertPopup(alert.Title, alert.Description, "OK"));
        }
        /// <summary>
        /// The add error.
        /// </summary>
        /// <param name="message">
        /// The message.
        /// </param>
        /// <param name="ex">
        /// The ex.
        /// </param>
        /// <returns>
        /// The <see cref="string"/>.
        /// </returns>
        public List <ViewModelError> AddError <T>(ServiceResponse <T> serviceResponse)
        {
            Exception exception = null;

            if (!serviceResponse.IsStatusOK())
            {
                exception = new Exception(serviceResponse.ErrorMessage);
            }

            var error = new ViewModelError(serviceResponse.Message,
                                           serviceResponse.ErrorMessage,
                                           ViewModelError.ErrorAction.Display,
                                           ViewModelError.ErrorSeverity.Error, serviceResponse.Errors.ToList(), exception);

            _errors.Add(error);
            return(_errors);
        }
Exemple #5
0
        public ActionResult Create(UserFormViewModel viewModel, string permissions1)    //puse el 1 porque el controlador recibe un parametro "permissions" que es de tipo Models.Permission y trata de convertir el strin a este tipo de dato. por eso no puede
        {                                                                               //llamarse permissions/. https://stackoverflow.com/questions/7983023/the-parameter-conversion-from-type-system-string-to-type-x-failed-because-n
            if (!ModelState.IsValid)
            {
                ViewBag.Error = ViewModelError.Get(ModelState);
                return(View(_userRepository.InitializeNewFormViewModel(viewModel)));
            }
            try
            {
                string[] ids = PermissionsSplit(permissions1);

                //viewModel.Permissions = _userRepository.AddPermissionToUser(permissions);
                viewModel.Permissions = _userRepository.GetPermissionsByArray(ids);

                _userRepository.SaveUser(viewModel, "Create");
                return(RedirectToAction("Details", "Partners", new { id = viewModel.PartnerId }));
            }
            catch (Exception ex)
            {
                viewModel.Error = "Error creating user. " + ex.Message;
                //porque el Partner en RenderUserFormViewModel se envia la primera vez que se crea el view pero para cuando retorna error, se envia un viewModel que tiene el Partner en NULL.
                return(View(_userRepository.InitializeNewFormViewModel(viewModel)));
            }
        }
 private void LogError(ViewModelError error)
 {
     _logger.LogAction(new Exception($"{error.ViewModelType} - {error.Description}", error.Exception ?? new Exception($"{error.ViewModelType} - {error.Description}")));
 }
        /// <summary>
        /// User sign in.
        /// </summary>
        /// <param name="name">Full name.</param>
        /// <param name="email">Email address.</param>
        /// <param name="applyModel">The view model.</param>
        /// <returns></returns>
        public async Task <IActionResult> SignIn(string name, string email, string applyModel)
        {
            var viewModel = JsonConvert.DeserializeObject <ApplyViewModel>(applyModel);

            if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(email))
            {
                ViewModelError.AddViewModelError(ModelState, "ControllerError", "Please provide name and email");
                return(View("Apply", viewModel));
            }

            using (var client = new HttpClient())
            {
                // sign in
                var response = await client.PostAsync(UrlBuilder.SignInUri(_webApiSettings.BaseUrl, name, email), null);

                // Sign in succeded
                if (response.IsSuccessStatusCode)
                {
                    var data = await response.Content.ReadAsStringAsync();

                    var signInStatus = JsonConvert.DeserializeObject <SigninStatus>(data);
                    viewModel.SignedInPerson = new SignedInPerson(name, email, signInStatus.PersonId);

                    // 1. Create a new briefcase (for the single post) or get existing briefcase
                    response = await client.PostAsync(UrlBuilder.BriefcaseAddPostUri(_webApiSettings.BaseUrl, 0, viewModel.SignedInPerson.PersonId, viewModel.Post.Id), null);

                    if (response.IsSuccessStatusCode)
                    {
                        var briefcaseId = await response.Content.ReadAsStringAsync();

                        viewModel.BriefcaseId = int.Parse(briefcaseId);
                    }
                    else
                    {
                        // Try to get existing brieafcase id for person
                        var briefcase = Db.Briefcase.FirstOrDefault(x => x.PersonId == viewModel.SignedInPerson.PersonId);
                        if (briefcase != null)
                        {
                            viewModel.BriefcaseId = briefcase.Id;
                        }
                        else
                        {
                            ViewModelError.AddViewModelError(ModelState, "ControllerError", "An error occurred, please try again");
                            return(View("Apply", viewModel));
                        }
                    }

                    // 2. Create the interview
                    response = await client.PostAsync(UrlBuilder.InterviewCreateUri(_webApiSettings.BaseUrl, viewModel.BriefcaseId, null), null);

                    if (response.IsSuccessStatusCode)
                    {
                        data = await response.Content.ReadAsStringAsync();

                        viewModel.Interview   = JsonConvert.DeserializeObject <Interview>(data);
                        viewModel.CurrentStep = 0;
                    }
                    else
                    {
                        ViewModelError.AddViewModelError(ModelState, "ControllerError", "An error occurred, please try again");
                        return(View("Apply", viewModel));
                    }
                }
                // Failed
                else
                {
                    ViewModelError.AddViewModelError(ModelState, "ControllerError", "An error occurred, please try again");
                    return(View("Apply", viewModel));
                }
            }

            return(View("Step", viewModel));
        }