private Event getEvent(Incident incidentData, ContactValue contacts)
        {
            Event evnt = new Event();

            evnt.location.displayName = incidentData.City;
            evnt.body.content         = incidentData.Description;
            evnt.body.contentType     = Settings.EMAIL_MESSAGE_TYPE;
            evnt.subject   = incidentData.OutageType;
            evnt.attendees = new Attendee[]
            {
                new Attendee()
                {
                    emailAddress = contacts.value[0].emailAddresses[0], type = "required"
                },
                new Attendee()
                {
                    emailAddress = contacts.value[1].emailAddresses[0], type = "required"
                },
                new Attendee()
                {
                    emailAddress = contacts.value[2].emailAddresses[0], type = "required"
                },
            };
            evnt.start.timeZone = "Pacific Standard Time";
            DateTime startTime = GetEventTime();

            evnt.start.dateTime = $"{startTime.Year}-{startTime.Month}-{startTime.Day}T{startTime.Hour}:00:00";
            evnt.end.timeZone   = "Pacific Standard Time";
            evnt.end.dateTime   = $"{startTime.Year}-{startTime.Month}-{startTime.Day}T{startTime.Hour + 1}:00:00";
            return(evnt);
        }
예제 #2
0
        public string this[string columnName]
        {
            get
            {
                Error = string.Empty;
                switch (columnName)
                {
                case "ContactValue":
                    if (ContactType == ContactType.Email)
                    {
                        Regex regex   = new Regex(@"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
                        bool  isValid = regex.IsMatch(ContactValue.Trim());
                        if (!isValid)
                        {
                            Error = "Invalid Email.";
                        }
                    }
                    if (ContactType == ContactType.Phone)
                    {
                        Regex regex   = new Regex(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$");
                        bool  isValid = regex.IsMatch(ContactValue.Trim());
                        if (!isValid)
                        {
                            Error = "Invalid Phone.";
                        }
                    }
                    break;

                default:
                    break;
                }
                return(Error);
            }
        }
        private async Task CreateEvent(Incident incidentData)
        {
            string            userObjId   = ClaimsPrincipal.Current.FindFirst(Settings.AAD_OBJECTID_CLAIMTYPE).Value;
            SessionTokenCache tokenCache  = new SessionTokenCache(userObjId, HttpContext);
            string            tenantId    = ClaimsPrincipal.Current.FindFirst(Settings.AAD_TENANTID_CLAIMTYPE).Value;
            string            authority   = string.Format(Settings.AAD_INSTANCE, tenantId, "");
            AuthHelper        authHelper  = new AuthHelper(authority, Settings.AAD_APP_ID, Settings.AAD_APP_SECRET, tokenCache);
            string            accessToken = await authHelper.GetUserAccessToken(Url.Action("Create", "Incident", null, Request.Url.Scheme));

            ContactValue contacts = null;

            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                HttpResponseMessage response = await client.GetAsync(Settings.GRAPH_CONTACTS_URL);

                if (response.IsSuccessStatusCode)
                {
                    string resultString = await response.Content.ReadAsStringAsync();

                    contacts = JsonConvert.DeserializeObject <ContactValue>(resultString);
                }
            }

            Event evnt = getEvent(incidentData, contacts);

            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                client.DefaultRequestHeaders.Add("Prefer", "outlook.timezone=\"Pacific Standard Time\"");

                StringContent msgContent = new StringContent(JsonConvert.SerializeObject(evnt), System.Text.Encoding.UTF8, "application/json");
                msgContent.Headers.ContentType = new MediaTypeWithQualityHeaderValue("application/json");
                HttpResponseMessage response = await client.PostAsync(Settings.GRAPH_EVENTS_URL, msgContent);

                if (response.IsSuccessStatusCode)
                {
                    string resultString = await response.Content.ReadAsStringAsync();
                }
            }
        }