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)); }
//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); } }
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)); }