public async Task <ActionResult> Ban([FromBody] BanViewModel model) { var ajaxReturn = new AjaxFeedbackViewModel(); try { var dto = Mapper <BanViewModel, BanDTO>(model); dto.AdminAccount = User.Identity.Name; dto.ExpiresAt = Convert.ToDateTime(model.Date, CultureInfo.CurrentCulture.DateTimeFormat); await _banService.BanAccount(dto); } catch (InvalidIdException) { // Id of an account that does not exist. ajaxReturn.Title = _localizer["Error"]; ajaxReturn.Message = _localizer["InvalidAttempt"]; return(Json(ajaxReturn)); } catch (NoAuthorizationException) { // Game Master trying to cheat LogUnauthorizedAccess(User.Identity.Name, "Admin/Account/Ban:Post"); return(RedirectToAction("List")); } catch (InvalidAdminAccountException) { // Invalid logged-in admin account. // I don't think is possible throw this error by this controller ajaxReturn.Title = _localizer["Error"]; ajaxReturn.Message = _localizer["InvalidAttempt2"]; return(Json(ajaxReturn)); } catch (RequiredAdminCharacterException) { // Need a god character or game master character to do it. ajaxReturn.Title = _localizer["Error"]; ajaxReturn.Message = _localizer["YouNeedAGodCharacter"]; return(Json(ajaxReturn)); } catch (AccountAlreadyBannedException) { // Can not ban, because the target account is already banned. ajaxReturn.Title = _localizer["Error"]; ajaxReturn.Message = _localizer["AlreadyBanned"]; return(Json(ajaxReturn)); } catch (Exception ex) { // Unknow error LogError(ex, "Error on Admin/Account/Ban"); ajaxReturn.Title = _localizer["Error"]; ajaxReturn.Message = _localizer["UnknowError"]; return(Json(ajaxReturn)); } // Success ajaxReturn.Title = _localizer["Success"]; ajaxReturn.Message = _localizer["BannedSuccefully"]; return(Json(ajaxReturn)); }