public void SendEventTileNotification(EventTileModel etm) { var content = new TileBindingContentAdaptive(); TileGroup firstGroup = new TileGroup(); TileSubgroup sgroup = new TileSubgroup(); sgroup.Weight = 22; TileImage imgOrganizer = new TileImage(); var uriImageOrganizer = etm.OrganizerImageAbsoluteUri; if (string.IsNullOrEmpty(uriImageOrganizer)) uriImageOrganizer = unknownPersonImageUri.AbsoluteUri; imgOrganizer.Source = new TileImageSource(uriImageOrganizer); sgroup.Children.Add(imgOrganizer); firstGroup.Children.Add(sgroup); sgroup = new TileSubgroup(); TileText organizerName = new TileText(); organizerName.Text = etm.OrganizerName; sgroup.Children.Add(organizerName); TileText timeEvent = new TileText(); timeEvent.Text = etm.TimeDelta; timeEvent.Style = TileTextStyle.CaptionSubtle; sgroup.Children.Add(timeEvent); TileText eventBdy = new TileText(); eventBdy.Text = etm.Subject; sgroup.Children.Add(eventBdy); firstGroup.Children.Add(sgroup); content.Children.Add(firstGroup); foreach (var driveItem in etm.Items.Take(2)) { TileGroup secondGroup = new TileGroup(); sgroup = new TileSubgroup(); TileImage imgExt = new TileImage(); imgExt.Source = new TileImageSource(driveItem.IconAbsoluteUri); sgroup.Children.Add(imgExt); sgroup.Weight = 5; secondGroup.Children.Add(sgroup); sgroup = new TileSubgroup(); TileText tt = new TileText(); tt.Text = driveItem.Title; sgroup.Children.Add(tt); secondGroup.Children.Add(sgroup); content.Children.Add(secondGroup); } TileContent tileContent = new TileContent() { Visual = new TileVisual() { TileWide = new TileBinding() { Content = content }, TileMedium = new TileBinding() { Content = content }, } }; try { var tileContentxml = tileContent.ToString(); TileNotification notification = new TileNotification(tileContent.GetXml()); TileUpdateManager.CreateTileUpdaterForApplication().Update(notification); } catch (Exception ex) { throw; } }
private static async Task<EventTileModel> InternalGetNextEvent() { var events = new List<EventTileModel>(); try { var start = DateTime.UtcNow.ToString("o"); var end = DateTime.UtcNow.AddDays(1).ToString("o"); using (HttpClient client = new HttpClient()) { var token = await AuthenticationHelper.TryAuthenticateSilentlyAsync(); if (string.IsNullOrEmpty(token)) return null; client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); string query = String.Format("?startDateTime={0}&endDateTime={1}", start, end); // Endpoint for the current user's events Uri usersEndpoint = new Uri(AuthenticationHelper.GraphEndpointId + "me/calendarView" + query); using (HttpResponseMessage response = await client.GetAsync(usersEndpoint)) { if (response.IsSuccessStatusCode) { string responseContent = await response.Content.ReadAsStringAsync(); var jResult = JObject.Parse(responseContent); foreach (JObject jsonEvent in jResult["value"]) { EventTileModel evm = new EventTileModel(); evm.OrganizerName = jsonEvent["organizer"]["emailAddress"]["name"].Value<string>(); evm.OrganizerMail = jsonEvent["organizer"]["emailAddress"]["address"].Value<string>(); evm.Subject = jsonEvent["subject"].Value<string>(); var startingDate = DateTime.Parse(jsonEvent["start"]["dateTime"].Value<string>()).ToLocalTime(); evm.Start = startingDate; var hourStartingDate = startingDate.Hour < 10 ? "0" + startingDate.Hour.ToString() : startingDate.Hour.ToString(); var minStartingDate = startingDate.Minute < 10 ? "0" + startingDate.Minute.ToString() : startingDate.Minute.ToString(); var startingHourDate = string.Format("{0}:{1}", hourStartingDate, minStartingDate); var endDate = DateTime.Parse(jsonEvent["end"]["dateTime"].Value<string>()).ToLocalTime(); evm.End = endDate; var hourEndDate = endDate.Hour < 10 ? "0" + endDate.Hour.ToString() : endDate.Hour.ToString(); var minEndDate = endDate.Minute < 10 ? "0" + endDate.Minute.ToString() : endDate.Minute.ToString(); var endHourDate = string.Format("{0}:{1}", hourEndDate, minEndDate); evm.BodyPreview = jsonEvent["bodyPreview"].Value<string>(); evm.IsAllDay = jsonEvent["isAllDay"].Value<bool>(); evm.TimeDelta = evm.IsAllDay ? "All day event" : startingHourDate + "-" + endHourDate; events.Add(evm); } } } } } catch (Exception ex) { Debug.WriteLine(ex.Message); } if (events == null) return null; events = events.Where(ev => ev.Start.LocalDateTime > DateTime.Now.ToLocalTime()).ToList(); // ordering all events var gEvents = events.GroupBy(ev => ev.Start).ToList(); // get day events var gEventsOrdered = gEvents.OrderBy(g => g.Key).ToList(); if (gEventsOrdered.Count <= 0) return null; var evg = gEventsOrdered[0]; var lst = evg.OrderBy(ev => ev.Start.DateTime).OrderBy(ev => ev.IsAllDay).ToList(); var evtzero = lst[0]; var spUsers = await SharePointSearchHelper.SPGetUsers(new[] { evtzero.OrganizerMail }); if (spUsers == null) return null; var user = spUsers[0]; var internalItems = await SharePointSearchHelper.SPGetSharedFilesBeetweenUserAndMe(user.DocId); var graph = AuthenticationHelper.GetGraphService(); var imageUri = await TileHelper.Current.GetPhotoUri(user.UserName); if (imageUri != null) evtzero.OrganizerImageAbsoluteUri = imageUri.AbsoluteUri; foreach (var item in internalItems) { DriveItemTileModel ditm = new DriveItemTileModel(); FileInfo fi = new FileInfo(item.Filename); var fileExtension = fi.Extension; var fileExtensionIconUri = TileHelper.Current.GetImageExtensionsUri(fi.Extension); ditm.IconAbsoluteUri = fileExtensionIconUri.AbsoluteUri; ditm.Title = item.Title; evtzero.Items.Add(ditm); } return evtzero; }