Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web.Http;

namespace HrmtsEventsReceiver.Controllers
{
	public class HRMTSMessage
    {
        public string EventType;
        public int ProjectId;
		public int StatusId;
		public string TenantId;
		public string ApplicationId;
    }
    public class HRMTSEvent
    {
        public int DepartmentId;
        public int CustomerId;
        public HRMTSMessage Message;
    }
    public class EventsController : ApiController
    {
        [HttpPost]
        public async Task<HttpResponseMessage> ReceiveEvent()
        {
            var content = await Request.Content.ReadAsStringAsync();
            HRMTSEvent hrmtsEvent = (HRMTSEvent)JsonConvert.DeserializeObject(content, typeof(HRMTSEvent));
            if (hrmtsEvent != null)
            {
                if (hrmtsEvent.Message.EventType == "ProjectUpdated")
                {
                    HttpClient client = new HttpClient();
                    client.BaseAddress = new Uri("https://recruiter-api.hr-manager.net/restful.svc/v2/");
                    string url = string.Format("{0}/{1}/positions/json?posid={2}", "<customeralias>", "<apikey>", hrmtsEvent.Message.ProjectId);
                    HttpResponseMessage res = await client.GetAsync(url);
                    JObject json = await res.Content.ReadAsAsync<JObject>();
                    JObject position = ((JObject)((JArray)json.GetValue("Items"))[0]);

                    // DO stuff with the Position object in my integration app

                    return new HttpResponseMessage(HttpStatusCode.OK);
                }
				else if (hrmtsEvent.Message.EventType == "CandidateStatusUpdated")
                {
                    HttpClient client = new HttpClient();

                    //Do authentication stuff here.

                    //call application api to get application details

                    client.BaseAddress = new Uri($"https://api.talentech.io/TalentRecruiter/V2/");
                    string url = string.Format($"/applications/{hrmtsEvent.Message.ApplicationId}");
                    HttpResponseMessage res = await client.GetAsync(url);
                    JObject applicationDetails = await res.Content.ReadAsAsync<JObject>();

                    // DO stuff with the application object in my integration app

                    return new HttpResponseMessage(HttpStatusCode.OK);
				}
 
                return new HttpResponseMessage(HttpStatusCode.OK);
            }

            return new HttpResponseMessage(HttpStatusCode.NotImplemented);
        }
    }
}

...