ids)
{
var batchErrorHeader = $"{_localizer["Common_BatchDelete_Failed"].Value}
";
var batchResult = new BatchResponseVm(batchErrorHeader) { Success = true };
foreach (var id in ids)
{
var item = await _customerService.GetAsync(id);
if (item != null)
{
//Noch was anderes zu berücksichtigen?
var customerCount = 0; //await UserService.CountByTenantAsync(item.Id);
if (customerCount == 0)
{
batchResult.BatchResponseList.Add(new BatchResponseItemVm() { Id = item.Id.ToString(), Name = item.Name, Success = true, NotFound = false, ErrorMessage = "" });
var postingPath = FileServiceHelper.GetCustomerPath(item.Id);
await FileService.ClearDirectoryAsync(FileServiceHelper.DocumentContainer, postingPath);
await RemoveThumbnail(FileServiceHelper.DocumentContainer, item.Logo, 400);
await RemoveThumbnail(FileServiceHelper.DocumentContainer, item.Logo, 200);
await RemoveThumbnail(FileServiceHelper.DocumentContainer, item.Logo, 100);
await _userService.ResetCustomerAsync(item.Id);
_customerService.Remove(item);
}
else
{
batchResult.Success = false;
if (customerCount > 0)
{
batchResult.BatchResponseList.Add(new BatchResponseItemVm() { Id = id.ToString(), Name = item.Name, Success = false, NotFound = false, ErrorMessage = string.Format(_localizer["Common_BatchDelete_InUse_Users"], $"{item.Name}", $"{customerCount}") + "
" });
break;
}
}
}
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 _customerService.CommitAsync(User.Identity.Name);
return Json(batchResult);
}
#region Helper
///
/// Gibt eine Liste von Kunden 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 _customerService.SearchAsync(filter);
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 Kunden für LookUp zurück welche über ein Mangopay Konto verfügen
///
/// DataManager
/// Soll "Keine(r)" integriert werden
/// Liste
[Authorize(Policy = Policies.PowerUserOnly)]
public async Task LookupMangopay([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 _customerService.SearchWithMangopayAccountAsync(filter);
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 Adresse eines Kunden mit Namen für Land und Bundelsand aufgelöst zurück
///
/// Id des Kunden
/// Json
[Authorize(Policy = Policies.PowerUserOnly)]
public async Task GetAddress(long customerId)
{
var customer = await _customerService.GetAsync(customerId);
if (customer != null)
{
var model = _mapper.Map(customer.Address);
var country = _countryService.GetCountry(model.CountryCode);
model.CountryName = country.Name;
var state = _countryService.GetState(model.CountryCode, model.State);
model.StateName = state.Name;
return Json(model);
}
return BadRequest();
}
#endregion
}
}