Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
        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;
        }