// // GET: /SalesLead/ public async Task <ActionResult> Index() { LeadContactViewModel vm = new LeadContactViewModel(); var client = await GetExchangeClient(); var messageResults = await(from i in client.Me.Inbox.Messages where i.Subject.Contains("[SKU:") orderby i.DateTimeSent descending select i).ExecuteAsync(); foreach (var message in messageResults.CurrentPage) { LeadInfo newContact = new LeadInfo(); newContact.ID = message.Id; newContact.email = message.From.Address; newContact.message = message.BodyPreview; newContact.dateReceived = message.DateTimeReceived.Value.DateTime; //look up product from SKU var beginPos = message.Subject.IndexOf("[", 0) + 1; var endPos = message.Subject.IndexOf("]", beginPos); string skuLine = message.Subject.Substring(beginPos, endPos - beginPos); List <Product> products = await GetProducts(); var product = products.Where(p => p.Title.Contains(skuLine.Split(':')[1])).SingleOrDefault(); newContact.productRequest = product.Title; vm.leads.Add(newContact); } //get the sales staff from outlook var contactsResults = await(from i in client.Me.Contacts orderby i.DisplayName select i).ExecuteAsync(); foreach (var contact in contactsResults.CurrentPage) { SalesPerson person = new SalesPerson(); person.ID = contact.Id; person.name = contact.DisplayName; person.email = contact.EmailAddress1; vm.salesStaff.Add(person); } return(View(vm)); }
public IActionResult LeadContact(LeadContactViewModel leadContact) { if (leadContact is null) { throw new ArgumentNullException(nameof(leadContact)); } if (!ModelState.IsValid) { return(RedirectToAction("FreelanceAdmin")); } _db.LeadContacts.Add(leadContact); _db.SaveChanges(); return(View()); }
public async Task <ActionResult> Index(LeadContactViewModel vm) { var client = await GetExchangeClient(); var contactResults = await(from i in client.Me.Contacts select i).ExecuteAsync(); var contact = contactResults.CurrentPage.Where(c => c.Id == vm.selectedSalesStaffID).SingleOrDefault(); //USE HTTPCLIENT //get authorization token Authenticator authenticator = new Authenticator(); var authInfo = await authenticator.AuthenticateAsync(ExchangeResourceId); //send request through HttpClient HttpClient httpClient = new HttpClient(); httpClient.BaseAddress = new Uri(ExchangeResourceId); //add authorization header httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", await authInfo.GetAccessToken()); //prepare POST content for forward request ForwardMessage forwardContent = new Models.ForwardMessage(); forwardContent.Comment = "This lead has been reassigned to you"; forwardContent.ToRecipients.Add(new Recipient() { Address = contact.EmailAddress1, Name = contact.DisplayName }); //convert POST content to JSON StringContent postContent = new StringContent(JsonConvert.SerializeObject(forwardContent)); postContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); //send forward request var forwardResponse = httpClient.PostAsync("/ews/odata/Me/Inbox/Messages('" + vm.selectedLeadID + "')/Forward", postContent).Result; //delete message to remove from INBOX/Lead List //send delete request var deleteResponse = httpClient.DeleteAsync("/ews/odata/Me/Inbox/Messages('" + vm.selectedLeadID + "')").Result; //refresh leads vm.leads.Clear(); var messageResults = await(from i in client.Me.Inbox.Messages where i.Subject.Contains("[SKU:") orderby i.DateTimeSent descending select i).ExecuteAsync(); foreach (var message in messageResults.CurrentPage) { LeadInfo newContact = new LeadInfo(); newContact.ID = message.Id; newContact.email = message.From.Address; newContact.message = message.BodyPreview; newContact.dateReceived = message.DateTimeReceived.Value.DateTime; vm.leads.Add(newContact); } return(View(vm)); }