internal static IncidentContact CreateIncidentContact(long id)
        {
            var result = new IncidentContact
            {
                Contact = CreateNamedID(id)
            };

            return(result);
        }
        /// <summary>
        /// Create Internal Incident Records
        /// </summary>
        /// <param name="contactID"></param>
        /// <param name="srID"></param>
        /// <param name="reportingIncID"></param>
        /// <param name="fsarID"></param>
        /// <param name="orgID"></param>
        /// <returns></returns>
        public int CreateInternalIncident(int contactID, int srID, int reportingIncID, int fsarID, int orgID)
        {
            try
            {
                //Check if it exist in order to avoid duplicate record
                Incident internalIncident = new Incident();
                string   response         = checkIfInternalIncidentExistForSR(reportingIncID, srID);
                if (response != null)
                {
                    internalIncident.ID = new ID
                    {
                        id          = Convert.ToInt32(response),
                        idSpecified = true
                    };
                }
                /*Set OOTB fields*/
                IncidentContact primarycontact = new IncidentContact {
                    Contact = new NamedID {
                        ID = new ID {
                            id = contactID, idSpecified = true
                        }
                    }
                };
                internalIncident.PrimaryContact = primarycontact;
                internalIncident.Organization   = new NamedID {
                    ID = new ID {
                        id = orgID, idSpecified = true
                    }
                };

                /*Set Custom fields*/
                List <GenericField> customAttributes = new List <GenericField>();
                customAttributes.Add(createGenericField("FSAR", createNamedIDDataValue(fsarID), DataTypeEnum.NAMED_ID));
                customAttributes.Add(createGenericField("SalesRelease", createNamedIDDataValue(srID), DataTypeEnum.NAMED_ID));
                customAttributes.Add(createGenericField("reporting_incident", createNamedIDDataValue(reportingIncID), DataTypeEnum.NAMED_ID));
                GenericObject customAttributeobj = genericObject(customAttributes.ToArray(), "IncidentCustomFieldsc");
                GenericField  caPackage          = createGenericField("CO", createObjDataValue(customAttributeobj), DataTypeEnum.OBJECT);

                /*Set Custom fields*/
                List <GenericField> customFields = new List <GenericField>();
                customFields.Add(createGenericField("incident_type", createNamedIDDataValueForName("Internal Incident"), DataTypeEnum.NAMED_ID));//55 is id of "Internal incident"
                GenericObject customfieldobj = genericObject(customFields.ToArray(), "IncidentCustomFieldsc");
                GenericField  cfpackage      = createGenericField("c", createObjDataValue(customfieldobj), DataTypeEnum.OBJECT);

                internalIncident.CustomFields = genericObject(new[] { caPackage, cfpackage }, "IncidentCustomFields");

                ClientInfoHeader hdr = new ClientInfoHeader()
                {
                    AppID = "Create Internal Incident"
                };
                //Update if internal incident exist
                if (response != null)
                {
                    _rightNowClient.Update(hdr, new RNObject[] { internalIncident }, new UpdateProcessingOptions {
                        SuppressExternalEvents = false, SuppressRules = false
                    });
                    return(Convert.ToInt32(response));
                }
                else//create a new internal incident
                {
                    RNObject[] resultobj = _rightNowClient.Create(hdr, new RNObject[] { internalIncident }, new CreateProcessingOptions {
                        SuppressExternalEvents = false, SuppressRules = false
                    });
                    if (resultobj != null)
                    {
                        return(Convert.ToInt32(resultobj[0].ID.id));
                    }
                }
            }
            catch (Exception ex)
            {
                WorkspaceAddIn.InfoLog("Excpetion in creating internal incident: " + ex.Message);
            }
            return(0);
        }
        /// <summary>
        /// Create Reporting Incident
        /// </summary>
        /// <param name="contactID"></param>
        /// <param name="fsarID"></param>
        /// <param name="orgID"></param>
        /// <returns></returns>
        public int CreateReportingIncident(int contactID, int fsarID, int orgID)
        {
            try
            {
                string response = checkIfReportingIncidentExistforFSAR(fsarID, contactID);
                if (response != null)
                {
                    return(Convert.ToInt32(response));
                }
                /*Set OOTB fields*/
                Incident        reportedIncident = new Incident();
                IncidentContact primarycontact   = new IncidentContact {
                    Contact = new NamedID {
                        ID = new ID {
                            id = contactID, idSpecified = true
                        }
                    }
                };
                reportedIncident.PrimaryContact = primarycontact;
                reportedIncident.Organization   = new NamedID {
                    ID = new ID {
                        id = orgID, idSpecified = true
                    }
                };
                reportedIncident.StatusWithType = new StatusWithType
                {
                    Status = new NamedID
                    {
                        Name = "Solution Development"
                    }
                };

                /*Set Custom Attributes*/
                List <GenericField> customAttributes = new List <GenericField>();
                customAttributes.Add(createGenericField("FSAR", createNamedIDDataValue(fsarID), DataTypeEnum.NAMED_ID));
                customAttributes.Add(createGenericField("FSAR_required", createBooleanDataValue(true), DataTypeEnum.BOOLEAN));
                GenericObject customAttributeobj = genericObject(customAttributes.ToArray(), "IncidentCustomFieldsc");
                GenericField  caPackage          = createGenericField("CO", createObjDataValue(customAttributeobj), DataTypeEnum.OBJECT);

                /*Set Custom fields*/
                List <GenericField> customFields = new List <GenericField>();
                customFields.Add(createGenericField("incident_type", createNamedIDDataValueForName("Reported Incident"), DataTypeEnum.NAMED_ID));//55 is id of "Internal incident"
                GenericObject customfieldobj = genericObject(customFields.ToArray(), "IncidentCustomFieldsc");
                GenericField  cfpackage      = createGenericField("c", createObjDataValue(customfieldobj), DataTypeEnum.OBJECT);

                reportedIncident.CustomFields = genericObject(new[] { caPackage, cfpackage }, "IncidentCustomFields");

                ClientInfoHeader hdr = new ClientInfoHeader()
                {
                    AppID = "Create Reported Incident"
                };
                RNObject[] resultobj = _rightNowClient.Create(hdr, new RNObject[] { reportedIncident }, new CreateProcessingOptions {
                    SuppressExternalEvents = false, SuppressRules = false
                });
                if (resultobj != null)
                {
                    return(Convert.ToInt32(resultobj[0].ID.id));
                }
            }
            catch (Exception ex)
            {
                WorkspaceAddIn.InfoLog("Excpetion in creating reported incident: " + ex.Message);
            }
            return(0);
        }