ids)
{
var batchErrorHeader = $"{_localizer["Common_BatchDelete_Failed"].Value}
";
var batchResult = new BatchResponseVm(batchErrorHeader) { Success = true };
foreach (var id in ids)
{
var item = await _pageService.GetAsync(id);
if (item != null)
{
var useCount = 0;
if (useCount == 0)
{
batchResult.BatchResponseList.Add(new BatchResponseItemVm() { Id = item.Id.ToString(), Name = item.Title, Success = true, NotFound = false, ErrorMessage = "" });
_pageService.Remove(item);
}
else
{
if (useCount != 0)
{
batchResult.Success = false;
batchResult.BatchResponseList.Add(new BatchResponseItemVm() { Id = id.ToString(), Name = item.Title, Success = false, NotFound = false, ErrorMessage = string.Format(_localizer["Common_BatchDelete_InUse"], $"{item.Title}", $"{useCount}") + "
" });
}
}
}
else
{
batchResult.Success = false;
batchResult.BatchResponseList.Add(new BatchResponseItemVm() { Id = id.ToString(), Name = "", Success = false, NotFound = true, ErrorMessage = string.Format(_localizer["Common_BatchDelete_NotFound"], $"{id}") + "
" });
}
}
if (batchResult.BatchResponseList.Any(c => c.Success))
await _pageService.CommitAsync(User.Identity.Name);
return Json(batchResult);
}
#region App
///
/// Anzeigen der Text-Seite für die App
///
/// Code der Seite
/// Gewünschte Sprache
/// Darkmode?
/// Wenn FAQ welcher Typ?
///
[AllowAnonymous]
public async Task Show(string code, string language, bool dark = false, FaqType faqType = FaqType.Both)
{
var page = await _pageService.GetwithNamesAsync(code, language, FallbackLanguage);
if (page != null)
{
page.SetLanguage(language.ToUpperInvariant());
ViewBag.DarkMode = dark;
var model = _mapper.Map(page);
if (code.ToUpper() == "FAQ" && !string.IsNullOrWhiteSpace(model.Content) && model.Content.Contains("[FAQ]"))
{
var faqHtml = await _faqService.GenerateHtmlForPageAsync(language, FallbackLanguage, faqType);
model.Content = model.Content.Replace("[FAQ]", faqHtml);
}
return View(model);
}
return NotFound();
}
///
/// Anzeigen der Seite für die App für den Monatswettbewerb der Dogwalker
///
/// Jahr
/// Monat
/// Id des AppUsers
/// Darkmode?
///
[AllowAnonymous]
public async Task ShowCompetitionMonthWalker(int? year, int? month, string a = "", bool dark = false)
{
year ??= DateTimeOffset.UtcNow.Year;
month ??= DateTimeOffset.UtcNow.Month;
ViewBag.DarkMode = dark;
ViewBag.Year = year;
ViewBag.Month = month;
ViewBag.MinCoins = _minCoinsOptions.Value.DogWalkerMonthly;
ViewBag.CoinsOptions = _coinsOptions.Value;
var topList = await _coinsService.GetMonthlyTopAsync(10, AppUserType.DogWalker, year.Value, month.Value, _minCoinsOptions.Value.DogWalkerMonthly);
if (!string.IsNullOrWhiteSpace(a))
{
var appUser = await _appUserService.GetAsync(a);
if (appUser is { Type: AppUserType.DogWalker or AppUserType.Both })
{
ViewBag.AppUser = appUser;
var myCoins = await _coinsService.GetOrCreateCoinsPerMonthAsync(appUser.Id, AppUserType.DogWalker, new DateTimeOffset(year.Value, month.Value, 1, 0, 0, 0, TimeSpan.Zero));
ViewBag.MyCoins = myCoins;
}
}
return View(topList);
}
///
/// Anzeigen der Seite für die App für den Jahrewettbewerb der Hundebesitzer
///
/// Jahr
/// Id des AppUsers
/// Darkmode?
///
[AllowAnonymous]
public async Task ShowCompetitionYearOwner(int? year, string a = "", bool dark = false)
{
year ??= DateTimeOffset.UtcNow.Year;
ViewBag.DarkMode = dark;
ViewBag.Year = year;
ViewBag.MinCoins = _minCoinsOptions.Value.OwnerYearly;
ViewBag.CoinsOptions = _coinsOptions.Value;
var topList = await _coinsService.GetYearlyTopAsync(10, AppUserType.DogOwner, year.Value, _minCoinsOptions.Value.OwnerYearly);
if (!string.IsNullOrWhiteSpace(a))
{
var appUser = await _appUserService.GetAsync(a);
if (appUser is { Type: AppUserType.DogOwner or AppUserType.Both })
{
ViewBag.AppUser = appUser;
var myCoins = await _coinsService.GetOrCreateCoinsPerYearAsync(appUser.Id, AppUserType.DogOwner, new DateTimeOffset(year.Value, 1, 1, 0, 0, 0, TimeSpan.Zero));
ViewBag.MyCoins = myCoins;
}
}
return View(topList);
}
#endregion
#region Helper
///
/// Überprüft ob ein Code für eine Text-Seite noch verfügbar ist
///
/// true wenn möglich, false sonst
[HttpPost]
public async Task IsCodeAvailable(string code, int id)
{
return Json(await _pageService.IsCodeAvailableAsync(code, id));
}
#endregion
}
}