public async Task <HttpResponseMessage> SendIssueMessageForDoor(IssueMessage message)
        {
            string userId = RequestContext.GetUserId();

            var _issueMessage = await ObjectsLocator.IssueMessageService.AddIssueMessage(message, userId);

            return(Request.CreateResponse(HttpStatusCode.OK, _issueMessage));
        }
Exemple #2
0
        //public async Task<Message> AddServiceMessage(Message message, string userId)
        //{
        //    int IsMailSentCount = 0;
        //    try
        //    {
        //        var companies = await ObjectLocator.CompanyService.GetCompaniesByProjectId(message.ProjectId);
        //        var userCompany = await ObjectLocator.CompanyService.GetProjectCompanyByUserId(message.ProjectId, userId);

        //        message.Recipients = new List<MessageUser>();
        //        var sendingUser = companies.SelectMany(c => c.Users).Where(u => u.MBEUserId.Equals(userId));

        //        var project = await ObjectLocator.ProjectService.GetProject(message.ProjectId);
        //        message.Sender.MBEUserId = userId;
        //        message.Sender.Timestamp = DateTime.UtcNow;

        //        foreach (var company in userCompany)
        //        {
        //            var receivers = company.Users.Where(u => u.IsProjectLeader);
        //            if (receivers != null)
        //            {
        //                foreach (var receiver in receivers)
        //                {
        //                    message.Recipients.Add(new MessageUser()
        //                    {
        //                        MBEUserId = receiver.MBEUserId,
        //                        CompanyId = company.Id,
        //                        Timestamp = DateTime.UtcNow
        //                    });
        //                }
        //                var IsMailSent = await ObjectLocator.EmailService.SendEmailForDoorMessages(sendingUser.FirstOrDefault(), receivers.Select(r => r.Email).ToList(), project, message, userCompany.FirstOrDefault().Name);
        //                if (IsMailSent)
        //                {
        //                    IsMailSentCount++;
        //                }
        //            }
        //        }
        //        await messageRepository.AddMessage(message);
        //        return message;
        //    }
        //    catch (Exception)
        //    {
        //        return null;
        //    }

        //}

        public async Task <IssueMessage> AddIssueMessage(IssueMessage issueMessage, string userId)
        {
            int IsMailSentCount = 0;

            try
            {
                var companies = await ObjectLocator.CompanyService.GetCompaniesByProjectId(issueMessage.ProjectId);

                issueMessage.Recipients = new List <MessageUser>();
                var sendingUser = companies.SelectMany(c => c.Users).Where(u => u.MBEUserId.Equals(userId));

                var project = await ObjectLocator.ProjectService.GetProject(issueMessage.ProjectId);

                issueMessage.Sender.MBEUserId = userId;
                issueMessage.Sender.Timestamp = DateTime.UtcNow;

                foreach (var companyId in issueMessage.RecipientCompanyIds)
                {
                    var userCompany = companies.Find(x => x.Id == companyId);
                    var receivers   = userCompany.Users.Where(u => u.IsEmailRecipient);
                    if (receivers != null)
                    {
                        foreach (var receiver in receivers)
                        {
                            issueMessage.Recipients.Add(new MessageUser()
                            {
                                MBEUserId = receiver.MBEUserId,
                                CompanyId = companyId,
                                Timestamp = issueMessage.sentTime
                            });
                        }
                        var IsMailSent = await ObjectLocator.EmailService.SendEmailForIssueMessage(sendingUser.FirstOrDefault(), receivers.Select(r => r.Email).ToList(), project, issueMessage, userCompany.Name);

                        if (IsMailSent)
                        {
                            IsMailSentCount++;
                        }
                    }
                }
                await issueMessageRepository.AddIsssueMessage(issueMessage);

                return(issueMessage);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Exemple #3
0
        public async Task <bool> SendEmailForIssueMessage(CompanyUser sendingUser, List <string> emailAddresses, Project project, IssueMessage issueMessage, string companyName)
        {
            EmailClient emailClient = new EmailClient(sendingUser.MBEUserId);

            var PostData = new EmailRequest
            {
                Email = new Email
                {
                    Cc          = new List <string>(),
                    Params      = new string[] { issueMessage.Subject, issueMessage.Body, project.Name, issueMessage.DoorNo, sendingUser.Name, sendingUser.Email, companyName },
                    Subject     = issueMessage.Subject + " - " + project.Name,
                    To          = emailAddresses?.ToArray(),
                    From        = sendingUser.Email,
                    Attachments = new List <string[]> {
                    },
                    Images      =
                        (issueMessage.Picture != null)
                        ? new List <string[]> {
                        new string[] { ".jpg", "image/jpeg", issueMessage.Picture },
                    }
                        : new List <string[]> {
                    },
                },
                Type =
                    (issueMessage.Picture != null)
                    ? EMailTypeEnum.ISSUE_MESSAGE_MAIL_WITH_PHOTO
                    : EMailTypeEnum.ISSUE_MESSAGE_MAIL,
            };

            string json = JsonConvert.SerializeObject(PostData, Formatting.Indented);

            var buffer      = System.Text.Encoding.UTF8.GetBytes(json);
            var byteContent = new ByteArrayContent(buffer);

            byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            return(await emailClient.SendMailForIssueMessages(sendingUser.MBEUserId, byteContent));
        }