ids, bool forceDelete = false)
{
var batchErrorHeader = $"{_localizer["Common_BatchDelete_Failed"].Value}
";
var batchResult = new BatchResponseVm(batchErrorHeader) { Success = true };
foreach (var id in ids)
{
var item = await _branchService.GetAsync(id);
if (item != null)
{
//await _customerService.ResetTypeAsync(item.Id); //Spezial zurücksetzen wenn nötig
var usedCount = 0;
if (usedCount == 0)
{
//TODO: Zurücksetzen der Kunden? Andere?
await _customerService.ResetBranchAsync(item.Id);
await _customerService.ResetBranchListingsAsync(item.Id);
await _listingService.DeleteByBranchAsync(item.Id, forceDelete);
batchResult.BatchResponseList.Add(new BatchResponseItemVm() { Id = item.Id.ToString(), Name = item.Title, Success = true, NotFound = false, ErrorMessage = "" });
if (forceDelete)
{
var postingPath = FileServiceHelper.GetBranchPath(item.Id);
await FileService.ClearDirectoryAsync(FileServiceHelper.DocumentContainer, postingPath);
await RemoveThumbnail(FileServiceHelper.DocumentContainer, item.Image, 400);
await RemoveThumbnail(FileServiceHelper.DocumentContainer, item.Image, 200);
await RemoveThumbnail(FileServiceHelper.DocumentContainer, item.Image, 100);
var languages = item.GetLanguages("ImageLanguage");
foreach (var language in languages)
{
item.SetLanguage(language);
var imageLocalized = item.ImageLanguage;
if (string.IsNullOrWhiteSpace(imageLocalized)) continue;
await RemoveThumbnail(FileServiceHelper.DocumentContainer, imageLocalized, 400);
await RemoveThumbnail(FileServiceHelper.DocumentContainer, imageLocalized, 200);
await RemoveThumbnail(FileServiceHelper.DocumentContainer, imageLocalized, 100);
}
_branchService.Remove(item);
}
else
{
item.Deleted = true;
item.UpdatedAt = DateTimeOffset.UtcNow;
}
}
else
{
if (usedCount != 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}", $"{usedCount}") + "
" });
}
}
}
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 _branchService.CommitAsync(User.Identity.Name);
return Json(batchResult);
}
#region Lookup
///
/// Gibt eine Liste von Branchen für LookUp zurück
///
/// DataManager
/// Soll "Keine(r)" integriert werden
/// Liste
[Authorize(Policy = Policies.PowerUserOnly)]
public async Task Lookup([FromBody] DataManager dm, bool includeNone = false)
{
var filter = string.Empty;
if (dm.Where?.FirstOrDefault() != null)
{
filter = dm.Where.First().value.ToString();
if (filter.IndexOf('(') > 0)
{
filter = filter.Substring(0, (filter.IndexOf('(') - 1));
filter = filter.TrimEnd();
}
}
var items = await _branchService.FilterWithNames(filter, SelectedLanguage, FallbackLanguage, false).ToListAsync();
var result = items.Select(item => new LookupItemVm() { Id = item.Id.ToString(), Name = $"{item.Name}" }).OrderBy(c => c.Name).ToList();
if (includeNone)
result.Insert(0, new LookupItemVm() { Id = "", Name = _localizer["Common_None"].ToString() });
return Json(result);
}
///
/// Gibt eine Liste von Branchen für Listungen für LookUp zurück
///
/// DataManager
/// Liste
[Authorize(Policy = Policies.PowerUserOnly)]
public async Task LookupListings([FromBody] DataManager dm)
{
var filter = string.Empty;
if (dm.Where?.FirstOrDefault() != null)
{
filter = dm.Where.First().value.ToString();
if (filter.IndexOf('(') > 0)
{
filter = filter.Substring(0, (filter.IndexOf('(') - 1));
filter = filter.TrimEnd();
}
}
var items = await _branchService.FilterWithNamesListings(filter, SelectedLanguage, FallbackLanguage, false).ToListAsync();
var result = items.Select(item => new LookupItemVm() { Id = item.Id.ToString(), Name = $"{item.Name}" }).OrderBy(c => c.Name).ToList();
return Json(result);
}
///
/// Gibt eine Liste von Branchen für Listungen für einen Kuden für LookUp zurück
///
/// DataManager
/// Id des Kunden
/// Liste
[Authorize(Policy = Policies.CustomerOnly)]
public async Task LookupCustomer([FromBody] DataManager dm, long customerId)
{
var filter = string.Empty;
if (dm.Where?.FirstOrDefault() != null)
{
filter = dm.Where.First().value.ToString();
if (filter.IndexOf('(') > 0)
{
filter = filter.Substring(0, (filter.IndexOf('(') - 1));
filter = filter.TrimEnd();
}
}
var result = new List();
var customer = await _customerService.GetAsync(customerId);
if (customer != null)
{
var selectedList = new List();
if (!string.IsNullOrWhiteSpace(customer.BranchesJson))
selectedList = customer.BranchesJson.Split(',').ToList();
var items = await _branchService.FilterWithNamesListings(filter, SelectedLanguage, FallbackLanguage, false).ToListAsync();
result.AddRange(from item in items where selectedList.Contains(item.Id) select new LookupItemVm() { Id = item.Id.ToString(), Name = $"{item.Name}" });
}
return Json(result.OrderBy(c => c.Name));
}
#endregion
}
}