public async Task Add(EmailSms emailSms)
 {
     await WithConnection(async (connection, transaction) =>
     {
         DynamicParameters parameters = new DynamicParameters();
         parameters.Add("@Id", emailSms.Id, DbType.String);
         parameters.Add("@TYPE", emailSms.Type.AsEnumToInt(), DbType.Int32);
         parameters.Add("@MessageType", emailSms.MessageType.AsEnumToInt(), DbType.Int32);
         parameters.Add("@PhoneNumber", emailSms.PhoneNumber, DbType.String);
         parameters.Add("@Email", emailSms.Email, DbType.String);
         parameters.Add("@Title", emailSms.Title, DbType.String);
         parameters.Add("@CONTENT", emailSms.Content, DbType.String);
         parameters.Add("@Model", Serialize.JsonSerializeObject(emailSms.Model) ?? string.Empty, DbType.String);
         parameters.Add("@Template", emailSms.Template ?? string.Empty, DbType.String);
         parameters.Add("@STATUS", emailSms.Status.AsEnumToInt(), DbType.Int32);
         parameters.Add("@CreatedDateUtc", emailSms.CreatedDateUtc, DbType.DateTime);
         parameters.Add("@UpdatedDateUtc", emailSms.CreatedDateUtc, DbType.DateTime);
         parameters.Add("@CreatedUid", emailSms.CreatedUid, DbType.String);
         parameters.Add("@UpdatedUid", emailSms.CreatedUid, DbType.String);
         parameters.Add("@VerifyId", emailSms.VerifyId, DbType.String);
         var data = await connection.ExecuteAsync(ProcName.EmailSms_Add, parameters, transaction, commandType: CommandType.StoredProcedure);
         if (data > 0 && emailSms.Verify != null)
         {
             await Add(emailSms.Verify, connection, transaction);
         }
         return(data);
     });
 }
        public async Task <ICommandResult> Handle(EmailOrSmsBaseCommand command)
        {
            try
            {
                EmailSms emailOrSms = new EmailSms();
                string   file       = command.Type.GetDisplayName();
                object   model      = null;
                switch (command.Type)
                {
                case EnumDefine.EmailOrSmsTypeEnum.ExternalLoginConfirmWhenAccountIsExist:
                    model = Common.Serialize.JsonDeserializeObject <TestEmailSmsModel>(command.Model.ToString());
                    break;
                }
                string content = await _templateRenderer.ParseFromTemplateFileAsync(file, model);

                emailOrSms.Create(command, content);
                await _emailSmsService.AddToDb(emailOrSms);

                await _emailSmsService.SendCommand(new EmailSmsSendCommand()
                {
                    Id = emailOrSms.Id
                });

                ICommandResult result = new CommandResult()
                {
                    Message  = "",
                    ObjectId = emailOrSms.Id,
                    Status   = CommandResult.StatusEnum.Sucess
                };
                return(result);
            }
            catch (MessageException e)
            {
                e.Data["Param"] = command;
                ICommandResult result = new CommandResult()
                {
                    Message      = e.Message,
                    Status       = CommandResult.StatusEnum.Fail,
                    ResourceName = e.ResourceName
                };
                return(result);
            }
            catch (Exception e)
            {
                e.Data["Param"] = command;
                ICommandResult result = new CommandResult()
                {
                    Message = e.Message,
                    Status  = CommandResult.StatusEnum.Fail
                };
                return(result);
            }
        }
        public async Task <ICommandResult> Handle(EmailSmsSendCommand mesage)
        {
            try
            {
                if (string.IsNullOrEmpty(mesage.Id))
                {
                    throw new MessageException(ResourceKey.EmailSms_EmailSmsSendCommand_IsNotNullOrEmpty);
                }
                REmailSms emailSms = await _emailSmsService.GetFromDb(mesage.Id);

                if (emailSms == null)
                {
                    throw new MessageException(ResourceKey.EmailSms_NotFound);
                }
                EmailSms     emailOrSms = new EmailSms(emailSms);
                Ref <string> response   = new Ref <string>();
                bool         isOk       = false;
                if (emailOrSms.CheckMessageType(EnumDefine.EmailOrSmsMessageTypeEnum.Email))
                {
                    isOk = await _sendMailClient.Send(ConfigSettingEnum.AwsSenderAddress.GetConfig(), emailOrSms.Email, emailOrSms.Title, emailOrSms.Content, response);
                }
                if (emailOrSms.CheckMessageType(EnumDefine.EmailOrSmsMessageTypeEnum.Sms))
                {
                    //await _sendMailClient.Send(ConfigSettingEnum.AwsSenderAddress.GetConfig(), emailOrSms.Email, emailOrSms.Title, emailOrSms.Content);
                }
                if (isOk)
                {
                    emailOrSms.SetSendSuccess();
                }
                else
                {
                    emailOrSms.SetSendFail();
                }
                await _emailSmsService.ChangeToSendSuccess(emailOrSms.Id, emailOrSms.SendDate.GetValueOrDefault(), emailOrSms.Status, response.Value);

                ICommandResult result = new CommandResult()
                {
                    Message  = "",
                    ObjectId = emailOrSms.Id,
                    Status   = CommandResult.StatusEnum.Sucess
                };
                return(result);
            }
            catch (MessageException e)
            {
                e.Data["Param"] = mesage;
                ICommandResult result = new CommandResult()
                {
                    Message      = e.Message,
                    Status       = CommandResult.StatusEnum.Fail,
                    ResourceName = e.ResourceName
                };
                return(result);
            }
            catch (Exception e)
            {
                e.Data["Param"] = mesage;
                ICommandResult result = new CommandResult()
                {
                    Message = e.Message,
                    Status  = CommandResult.StatusEnum.Fail
                };
                return(result);
            }
        }
Esempio n. 4
0
 public async Task AddToDb(EmailSms emailSms)
 {
     await _emailSmsRepository.Add(emailSms);
 }