Exemple #1
0
        public SendMailResponse SendMail(SendMailRequest request)
        {
            var userAuthentication = userAuthenticationRepository.GetById(request.AuthKey);

            if (userAuthentication is null || userAuthentication.ExpireAt < DateTime.Now)
            {
                return(new SendMailResponse
                {
                    Code = "-1",
                    Completed = false,
                    Message = "Not Authenticated"
                });
            }
            var user    = userRepository.GetById(userAuthentication.UserId);
            var company = companyAccountRepository.GetFirstOrDefault(x => x.Identifier == request.ReceiverIdentifier);

            if (company is null)
            {
                return(new SendMailResponse
                {
                    Code = "-1",
                    Completed = false,
                    Message = "Receiver Company Not Found!"
                });
            }

            var outMail = new OutMail
            {
                Body               = request.Body,
                CompanyId          = user.CompanyId,
                ReceiverIdentifier = request.ReceiverIdentifier,
                InsertAt           = DateTime.Now,
                State              = (int)MailState.Received,
                Subject            = request.Subject,
            };

            outMailRepository.Create(outMail);


            bus.Publish <IMailReceived>(new
            {
                CompanyId = user.CompanyId,
                MailID    = outMail.MailId.ToString()
            });


            return(new SendMailResponse
            {
                Completed = true,
                Code = "1",
                Message = "Mail Received"
            });
        }
        public Task Consume(ConsumeContext <IMailProcess2Finished> context)
        {
            Console.WriteLine($"Have new message. Process started." + context.Message.MailID);
            //Console.WriteLine("context.Message.CompanyId " + context.Message.CompanyId);
            //Console.WriteLine("context.Message.CompanyId " + context.Message.MailID);
            OutMail outMail = outMailRepository.GetById(Convert.ToInt32(context.Message.MailID));

            outMail.State = (int)MailState.Delivered;
            outMailRepository.Update(outMail);
            CompanyAccount companyAccount = companyAccountRepository.GetById(Convert.ToInt32(context.Message.CompanyId));

            System.Threading.Thread.Sleep(1000);
            Console.WriteLine("MailProcess3 İşlemi Tamamlandı" + context.Message.MailID);

            return(Task.CompletedTask);
        }