public async Task <MahnungVersendenResponse> MahnungVersenden(List <int> orderItemIds, string language, int gewaehlteMahnungAnzahl, string userId) { try { var orderItemsByUser = await sqlDataAccess.GetOrderItemsByUser(orderItemIds.ToArray()); foreach (var itemByUser in orderItemsByUser) { dataBuilder.Reset(); var dataContext = dataBuilder .AddAuftraege(itemByUser.OrderItemIds) .AddBesteller(itemByUser.UserId) .AddUser(userId) .AddSprache(language) .AddValue("RückgabeTermin", DateTime.Today.AddDays(30).ToString("dd.MM.yyyy")) .Create(); switch (gewaehlteMahnungAnzahl) { case 1: // Sennde Mail Vorlage 1 var template1 = parameterHelper.GetSetting <AusleiheErsteMahnung>(); var user = userAccess.GetUser(itemByUser.UserId); template1.To = user.EmailAddress; await mailHelper.SendEmail(bus, template1, dataContext); break; case 2: // Sende Mail Vorlage 2 var template2 = parameterHelper.GetSetting <AusleiheZweiteMahnung>(); var initiatingUser = userAccess.GetUser(userId); template2.To = initiatingUser.EmailAddress; await mailHelper.SendEmail(bus, template2, dataContext); break; default: throw new InvalidEnumArgumentException(); } } await UpdateMahnungInfoForOrderItems(orderItemIds, gewaehlteMahnungAnzahl, userId); return(new MahnungVersendenResponse { Success = true }); } catch (Exception ex) { Log.Error(ex, "Unexptected error while sending Mahnungen"); return(new MahnungVersendenResponse { Success = false, Error = ex.Message }); } }