private twmwr GetWorkRequestOrigin(Forestry.Models.DTO.WorkRequest workRequest)
        {
            var obj = UowStorms.GenericSqlRepo
                      .RunRawSql <twmwr>(
                " select twmwr.no_ext_sys_id externalid, twmwr.no_ext_job externaljob " +
                " from twmwr " +
                " where twmwr.cd_wr = " + workRequest.Id.ToString())
                      .FirstOrDefault();

            return(obj);
        }
        public Forestry.Models.DTO.WorkRequest GetWorkRequestFromApi(Forestry.Models.DTO.WorkPacket workPacket)
        {
            //get the work request resourse
            dynamic workRequest = _workRequestRequestor.Get(new Uri(BaseManagedWorkApiUri + ResolveCurlyBrackets(Properties.Settings.Default.ManagedWorkOrderApiResourse_WorkRequest, workPacket.WorkRequestId.ToString())));

            //transform dynamic into work request DTO and resolve HATEOAS uri's
            Forestry.Models.DTO.WorkRequest wr = TransformDynamicWorkRequest(workRequest);

            Console.WriteLine("[WR:" + workPacket.WorkRequestId + " " + "WP:" + workPacket.WorkPacketId + "][SUCCESS]-retrieved Managed Work Order data");

            return(wr);
        }
        public void CreateRemedyTicket(Forestry.Models.DTO.WorkRequest workRequest, Forestry.Models.DTO.WorkPacket workPacket, List <ValidationResult> errors)
        {
            try
            {
                Console.WriteLine("[WR:" + workPacket.WorkRequestId + " " + "WP:" + workPacket.WorkPacketId + "][BEGIN--]-sending invalid data to Remedy");

                string allErrors = string.Empty;
                foreach (var str in errors)
                {
                    allErrors += str + $"\r\n";
                }
                string notes = "[WR: " + workPacket.WorkRequestId + " " + "WP: " + workPacket.WorkPacketId + "]" + "\r\n" + allErrors;

                HttpResponseMessage hrm = _incidentRequestor.Post(
                    new Uri(Properties.Settings.Default.RemedyUriHost + Properties.Settings.Default.RemedyUri),
                    new Incident
                {
                    AssignedSupportGroup = "CO - Work Management Process",
                    ClientService        = "IT - Work Management",
                    Company = "WEC Business Services",     //or We Energies
                    Impact  = "4-Minor/Localized",
                    Urgency = "4-Low",
                    Notes   = notes,
                    Summary = "STORMS to Forestry validation failed."
                }
                    );

                var    incident       = hrm.Headers.Single(m => m.Key == "X-Id");
                string incidentNumber = incident.Value.ToList()[0];

                Console.WriteLine("[WR:" + workPacket.WorkRequestId + " " + "WP:" + workPacket.WorkPacketId + "][SUCCESS]-" + incidentNumber + "" + " created in Remedy");
            }
            catch (HttpResponseException exception)
            {
                Console.WriteLine("[WR:" + workPacket.WorkRequestId + " " + "WP:" + workPacket.WorkPacketId + "][FAILED-]-failed to send invalid data to Remedy");
                Console.WriteLine("*************Http Response Error***************");
                Console.WriteLine("Http Status Code:" + exception.Response.StatusCode.ToString());

                foreach (var header in exception.Response.Headers)
                {
                    Console.WriteLine(header.Key + ", " + header.Value.ToList()[0]);
                }

                Console.WriteLine("*************Http Response Error***************");
            }
        }
        private Forestry.Models.DTO.WorkRequest TransformDynamicWorkRequest(dynamic workRequest)
        {
            var json = Newtonsoft.Json.JsonConvert.SerializeObject(workRequest);

            Forestry.Models.DTO.WorkRequest wr = Newtonsoft.Json.JsonConvert.DeserializeObject <Forestry.Models.DTO.WorkRequest>(
                json,
                new JsonSerializerSettings()
            {
                DefaultValueHandling = DefaultValueHandling.Ignore,
                TypeNameHandling     = TypeNameHandling.None,
                NullValueHandling    = NullValueHandling.Include,
                ContractResolver     = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver(),
                Converters           = { new Newtonsoft.Json.Converters.ExpandoObjectConverter() }
            }
                );

            wr.Customers    = _workRequestCustomersRequestor.Get(new Uri(UriHack(workRequest.customersUri.ToString())));
            wr.Premises     = _workRequestPremisesRequestor.Get(new Uri(UriHack(workRequest.premisesUri.ToString())));
            wr.ExtraDetails = _workRequestExtraDetailsRequestor.Get(new Uri(UriHack(workRequest.extraDetailsUri.ToString())));
            wr.Remarks      = _workRequestRemarksRequestor.Get(new Uri(UriHack(workRequest.remarksUri.ToString())));

            return(wr);
        }