Example #1
0
        public object UploadToCrm(Stream fileStream, string filename, string contentType,
                                  CrmContactData entity)
        {
            if (entity == null)
            {
                throw new ArgumentNullException("entity");
            }

            var request = new RestRequest("crm/{entityType}/{entityId}/files/upload.json", Method.POST);

            request.AddUrlSegment("entityType", entity.EntityTypeName)
            .AddUrlSegment("entityId", entity.Id.ToString())
            .AddParameter("storeOriginalFileFlag", false);

            request.AddFile(filename, fileStream.CopyTo, filename, fileStream.Length, contentType);

            var response = Execute(request);

            if (response.ResponseStatus != ResponseStatus.Completed ||
                (response.StatusCode != HttpStatusCode.Created &&
                 response.StatusCode != HttpStatusCode.OK))
            {
                throw new ApiHelperException("Upload file to crm failed.", response.StatusCode, response.Content);
            }

            var json = JObject.Parse(response.Content);

            var id = json["response"]["id"];

            return(id);
        }
Example #2
0
        public void AddToCrmHistory(MailMessageData message, CrmContactData entity, IEnumerable <object> fileIds)
        {
            var request = new RestRequest("crm/history.json", Method.POST);

            var contentJson = string.Format("{{ message_id : {0} }}", message.Id);

            request.AddParameter("content", contentJson)
            .AddParameter("categoryId", MAIL_CRM_HISTORY_CATEGORY)
            .AddParameter("created", new ApiDateTime(message.Date));

            var crmEntityType = entity.EntityTypeName;

            if (crmEntityType == CrmContactData.CrmEntityTypeNames.CONTACT)
            {
                request.AddParameter("contactId", entity.Id)
                .AddParameter("entityId", 0);
            }
            else
            {
                if (crmEntityType != CrmContactData.CrmEntityTypeNames.CASE &&
                    crmEntityType != CrmContactData.CrmEntityTypeNames.OPPORTUNITY)
                {
                    throw new ArgumentException(String.Format("Invalid crm entity type: {0}", crmEntityType));
                }

                request.AddParameter("contactId", 0)
                .AddParameter("entityId", entity.Id)
                .AddParameter("entityType", crmEntityType);
            }

            if (fileIds != null)
            {
                fileIds.ToList().ForEach(
                    id => request.AddParameter("fileId[]", id));
            }

            var response = Execute(request);

            if (response.ResponseStatus == ResponseStatus.Completed &&
                (response.StatusCode == HttpStatusCode.Created || response.StatusCode == HttpStatusCode.OK))
            {
                return;
            }

            if (response.ErrorException is ApiHelperException)
            {
                throw response.ErrorException;
            }

            throw new ApiHelperException("Add message to crm history failed.", response.StatusCode, response.Content);
        }