コード例 #1
0
        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
                });
            }
        }
コード例 #2
0
        private async Task ForcedSendPasswordEmailBenutzungskopie(ConsumeContext <DownloadAssetRequest> context, bool changeEmailRecipient)
        {
            try
            {
                var template    = parameterHelper.GetSetting <AufbereiteteBenutzungskopieZumDownloadBereit>();
                var message     = context.Message;
                var dataContext = dataBuilder
                                  .AddAuftraege(new[] { Convert.ToInt32(message.OrderItemId) })
                                  .AddUser(message.Recipient)
                                  .AddValue("Fehlermeldung", "")
                                  .AddValue("PasswortZipDatei", passwordHelper.GetHashPassword(message.OrderItemId.ToString()))
                                  .Create();

                // Beim Download der Benutzungskopie muss dass Passwort an den auslösenden Benutzer geschickt werden.
                // Im Template ist die allgemeine [email protected] hinterlegt.
                if (changeEmailRecipient)
                {
                    template.To = dataContext.User.EmailAddress;
                }

                await mailHelper.SendEmail(bus, template, dataContext);
            }
            catch (Exception ex)
            {
                Log.Error(ex, "An exception occurred while sending an EMail");
                throw;
            }
        }
コード例 #3
0
        private async Task SendMailBenutzungskopieOk(ConsumeContext <IAssetReady> context)
        {
            try
            {
                var template    = parameterHelper.GetSetting <AufbereiteteBenutzungskopieZumDownloadBereit>();
                var message     = context.Message;
                var dataContext = dataBuilder
                                  .AddAuftraege(new[] { Convert.ToInt32(message.OrderItemId) })
                                  .AddValue("Fehlermeldung", message.ErrorMessage)
                                  .AddValue("PasswortZipDatei", passwordHelper.GetHashPassword(message.OrderItemId.ToString()))
                                  .Create();

                await mailHelper.SendEmail(bus, template, dataContext);
            }
            catch (Exception ex)
            {
                Log.Error(ex, "An exception occurred while sending an EMail");
                throw;
            }
        }
コード例 #4
0
        private async Task SendDigipoolFailureMail(int orderItemId, string exceptionInfo)
        {
            try
            {
                var template    = parameterHelper.GetSetting <DigipoolAufbereitungFehlgeschlagen>();
                var dataContext = dataBuilder
                                  .AddAuftraege(new[] { orderItemId })
                                  .AddValue("exceptionMessage", exceptionInfo)
                                  .Create();

                await mailHelper.SendEmail(bus, template, dataContext);
            }
            catch (Exception ex)
            {
                Log.Error(ex, "An exception occurred while sending an EMail");
                throw;
            }
        }
コード例 #5
0
 /// <summary>
 ///     Fügt beim Builder folgendes hinzu:
 ///     - eine eigene Liste (Bezeichnung vom Parameter propertyName), welche die Aufträge enthält
 ///     - ein "Flag" (Bezeichnung vom Parameter propertyName ergänzt um "Vorhanden"), welches anzeigt, ob die Liste
 ///     Einträge hat.
 /// </summary>
 private void AddAuftraegeAndFlag(IDataBuilder builder, List <OrderItem> orderItems, string propertyName)
 {
     builder.AddValue(propertyName + "Vorhanden", orderItems.Count > 0);
     builder.AddAuftraege(Context.Ordering, orderItems, propertyName);
 }