private async Task <OpResult> ProcessSendEmailRequest(NotifyByEmailCmd cmd)
        {
            //sending will come later
            var sendResult = await SendEmail(cmd);

            switch (sendResult.ResultCode)
            {
            case OpResultCode.SUCCCESS:
            {
                var SaveSuccessfullEmailCmd = GetSaveCmd(sendResult, cmd);

                _persistentStorageActor.Tell(SaveSuccessfullEmailCmd);

                return(new OpResult
                    {
                        ResultCode = OpResultCode.SUCCCESS,
                        StatusDesc = OpResultCode.SUCCCESS.ToString()
                    });
            }

            default:
            {
                var logFailedEmailCmd = GetLogCmd(sendResult, cmd);

                _persistentStorageActor.Tell(logFailedEmailCmd);

                return(new OpResult
                    {
                        ResultCode = OpResultCode.FAILURE,
                        StatusDesc = sendResult.StatusDesc
                    });
            }
            }
        }
 private async Task <OpResult> SendEmail(NotifyByEmailCmd request)
 {
     return(await Task.Run(() =>
     {
         return new OpResult
         {
             ResultCode = OpResultCode.SUCCCESS,
             StatusDesc = OpResultCode.SUCCCESS.ToString()
         };
     }));
 }
 private PersistentStorageActor.SaveSentEmailCmd GetSaveCmd(OpResult sendResult, NotifyByEmailCmd cmd)
 {
     return(new PersistentStorageActor.SaveSentEmailCmd
     {
         EmailRequest = cmd.EmailRequest
     });
 }
 private PersistentStorageActor.LogFailedEmailCmd GetLogCmd(OpResult sendResult, NotifyByEmailCmd request)
 {
     return(new PersistentStorageActor.LogFailedEmailCmd
     {
         EmailRequest = request.EmailRequest,
         FailureReason = sendResult.StatusDesc
     });
 }