Example #1
0
        public bool AddEvent(CalendarService service, Event item)
        {
            var list      = service.CalendarList.List().Execute();
            var calendars = list.Items;

            if (calendars.Select(t => t.Summary.ToLower().Contains("WorkCard.vn".ToLower())) == null)
            {
                Google.Apis.Calendar.v3.Data.Calendar newCalendar = new Google.Apis.Calendar.v3.Data.Calendar();
                newCalendar.Summary     = "WorkCard.vn";
                newCalendar.Description = "Dùng để quản lý công việc với WorkCard.vn";
                newCalendar.Location    = "WorkCard.vn";

                service.Calendars.Insert(newCalendar);
            }

            var myCalendar = list.Items.SingleOrDefault(c => c.Summary == "WorkCard.vn");

            if (myCalendar != null)
            {
                var newEventRequest = service.Events.Insert(item, myCalendar.Id);
                var eventResult     = newEventRequest.Execute();
                return(true);
            }
            return(false);
        }
Example #2
0
        private Google.Apis.Calendar.v3.Data.Calendar GetGoogleCalendar(string calendarId)
        {
            CalendarsResource.GetRequest          request  = CaneldarService.Calendars.Get(calendarId);
            Google.Apis.Calendar.v3.Data.Calendar calendar = request.Execute();

            if (calendar != null)
            {
                return(calendar);
            }
            else
            {
                return(null);
            }
        }
        public async Task <string> GetOrCreateGCalID(Uri iCalUrl)
        {
            var list = await gCalService.GetCalendarList();

            string calendarID = list.SingleOrDefault(c => c.Summary.Equals(iCalUrl.ToString()))?.Id;

            if (calendarID == null)
            {
                var calendar = new GCal.Calendar {
                    Summary = iCalUrl.ToString()
                };
                calendar = await gCalService.Create(calendar);

                calendarID = calendar.Id;
            }

            return(calendarID);
        }
Example #4
0
        protected async Task CreateGCalIfNotExists(Calendar calendar)
        {
            if (calendar.GoogleCalendarID != null)
            {
                return;
            }

            var gCal = new GCal.Calendar
            {
                Summary = calendar.iCalendarUrl
            };

            logger("Creating Google calendar...");
            gCal = await gCalService.Create(gCal);

            calendar.GoogleCalendarID = gCal.Id;
            logger($"Saving Google calendar ID...");
            await calendarRepository.Update(calendar);
        }
Example #5
0
        // Update a calendar using PlanningLibrary (layered code on google calendar)
        public void updateCalendar(XmlDocument doc)
        {
            // Parsing data from XmlDocument
            XmlNodeList titel      = doc.GetElementsByTagName("eventName");
            XmlNodeList id         = doc.GetElementsByTagName("UUID");
            XmlNodeList xmlVersion = doc.GetElementsByTagName("version");

            // Logging parsed data
            Console.WriteLine(titel[0].InnerText);
            Console.WriteLine(id[0].InnerText);
            Console.WriteLine(xmlVersion[0].InnerText);

            // Creating a new <google.api> calendar to update an existing one, filled with parsed data from XmlDocument and finally sent with PlanningLibrary method.
            // Expects a <google.api> calendar, UUID, version
            Google.Apis.Calendar.v3.Data.Calendar calendar = new Google.Apis.Calendar.v3.Data.Calendar();
            calendar.Summary = titel[0].InnerText;
            Calendarss.IupdateCalendarById(calendar, id[0].InnerText, xmlVersion[0].InnerText);

            Console.WriteLine("Event successfully updated");
            ControlRoom.SendConfirmationMessage("Planning: Event successfully updated");
        }
        private static void CreateNewCalendar(ILog logger, CalendarService service, SmEmployee smEmployee)
        {
            string calendarId  = IsFacebookCalendarType() ? smEmployee.Facebook : smEmployee.Email;
            var    newCalendar = new Google.Apis.Calendar.v3.Data.Calendar()
            {
                Summary  = $"[{smEmployee.EmpNo}] {smEmployee.EmpFirstName} {smEmployee.EmpLastName} ({smEmployee.EmpNickName})",
                Location = $"{smEmployee.AddrLine} แขวง{smEmployee.SubDistrict} เขต{smEmployee.District} จังหวัด{smEmployee.Province} {smEmployee.PostCode}",
                TimeZone = GetTimeZone(),
                Id       = calendarId
            };

            CalendarsResource.InsertRequest insertCalendar = service.Calendars.Insert(newCalendar);
            try
            {
                insertCalendar.Execute();
            }
            catch (Exception e)
            {
                logger.Error($"Insert Calendar:{smEmployee.Email} Error:{e.Message}{e.StackTrace}");
            }
        }
        public async Task MakeEvents(IReadOnlyList <ScheduleDiff> schedule, WeekSchedule updatedWeekSchedule)
        {
            Calendar calendar = await _calendarService.GetCalendarById(_googleCalendarId);

            if (calendar == null)
            {
                throw new CalendarNotFoundException(_googleCalendarId);
            }

            var timezone = calendar.TimeZone;

            EventsResource.ListRequest request = _calendarService.CreateListRequestForWeek(
                _googleCalendarId,
                updatedWeekSchedule.Year,
                updatedWeekSchedule.WeekNumber);

            Events result = await _calendarService.GetEvents(request);

            var allRows = new List <Event>();

            while (result.Items != null)
            {
                // Add the rows to the final list
                allRows.AddRange(result.Items);

                // We will know we are on the last page when the next page token is null.
                // If this is the case, break.
                if (result.NextPageToken == null)
                {
                    break;
                }

                // Prepare the next page of results
                request.PageToken = result.NextPageToken;

                // Execute and process the next page request
                result = await _calendarService.GetEvents(request);
            }

            foreach (Event ev in allRows)
            {
                _ = await _calendarService.DeleteEvent(_googleCalendarId, ev);
            }

            // add items to calendar.
            IOrderedEnumerable <ScheduleDiff> addedSchedules = schedule
                                                               .Where(x => x.Status is ScheduleStatus.Added or ScheduleStatus.Unchanged)
                                                               .OrderBy(x => x.Start)
                                                               .ThenBy(x => x.Status);

            foreach (ScheduleDiff item in addedSchedules)
            {
                var extendedProperty = new Event.ExtendedPropertiesData
                {
                    Shared = new Dictionary <string, string>
                    {
                        { "Week", item.SingleShift.WeekSchedule.Year + "-" + item.SingleShift.WeekSchedule.WeekNumber },
                    },
                };

                var newEvent = new Event
                {
                    Start              = CreateEventDateTime(item.SingleShift.StartDateTime, timezone),
                    End                = CreateEventDateTime(item.SingleShift.EndDateTime, timezone),
                    Description        = string.Empty,
                    Location           = item.SingleShift.Location,
                    Summary            = item.SingleShift.Location,
                    ExtendedProperties = extendedProperty,
                };

                _ = await _calendarService.InsertEvent(_googleCalendarId, newEvent);
            }
        }