General
CRM-service CIWS is a client library that can be used with our REST interface.
Requirements
- .NET Framework 4.5 or later
Example Code
using System;
using System.Collections.Generic;
using System.Linq;
using CRMservice.ciws.rest;
using CRMservice.ciws.rest.Authenticators;
using CRMservice.ciws.rest.Core;
using MongoDB.Driver;
namespace SyncInterfaceService
{
class Program
{
[CrmModule(Module.Accounts)]
public class CrmAccountForRelation
{
[CrmFieldName("id")]
public string Id { get; set; }
public string Type { get; set; } = "accounts";
}
[CrmModule(Module.Accounts)]
public class CrmAccount
{
public string Type { get; set; } = "accounts";
[CrmFieldName("id")] public string Id { get; set; }
[CrmFieldName("name")] public string Name { get; set; }
[CrmFieldName("cf_1617")] public string CustomField { get; set; }
}
[CrmModule(Module.Contacts)]
public class CrmContact
{
[CrmFieldName("id")]
public string Id { get; set; }
public string Type { get; set; } = "contacts";
[CrmFieldName("first_name")]
public string Firstname { get; set; }
[CrmFieldName("last_name")]
public string Lastname { get; set; }
[CrmFieldName("passivation_date")]
public DateTime? PassivationDate { get; set; }
[CrmRelation(ContactsRelations.Account)]
public CrmAccountForRelation Account { get; set; }
}
public class CrmManager : CrmManagerBase
{
public CrmAccount UpdateAccount(CrmAccount account)
{
return BulkEntitySave(account);
}
public List UpdateMultipleAccounts(List accounts)
{
return BulkEntitySave(accounts);
}
public CrmAccount SearchForAccount(string crmId)
{
var search = new CrmSearch
{
Limit = 1,
Module = Module.Accounts
};
var filter = Builders.Filter.Eq("id", crmId);
return ExtendedSearch(search, filter).FirstOrDefault();
}
public CrmContact SearchForContact(string crmId)
{
var search = new CrmSearch
{
Limit = 1,
Module = Module.Contacts
};
var filter = Builders.Filter.Eq("id", crmId);
return ExtendedSearch(search, filter).FirstOrDefault();
}
public IEnumerable<List> GetAllAccounts()
{
var search = new CrmSearch
{
Buffer = 100,
Module = Module.Accounts
};
var searchYield = ExtendedSearchYield(search);
foreach (var yieldedList in searchYield)
{
yield return yieldedList;
}
}
static void Main()
{
var crmManager = new CrmManager();
crmManager.Authenticate("https://crmaddress.fi", new CrmJwtAuthenticator("username", "password"));
var account = crmManager.SearchForAccount("1234");
account.Name = "My Company";
var updated = crmManager.UpdateAccount(account);
IEnumerable<List> yieldedAccounts = crmManager.GetAllAccounts();
foreach (var listAccounts in yieldedAccounts)
{
//this will give you list of the size defined in search buffer
//and exit after all accounts have been handled
}
var contact = new CrmContact
{
Firstname = "Matti",
Lastname = "Meikäläinen",
Account = new CrmAccountForRelation {Id = account.Id}
};
//Create new entities by saving data without Id value
var crmContact = crmManager.BulkEntitySave(contact);
var searchedContact = crmManager.SearchForContact(crmContact.Id);
if (searchedContact.Account.Id == account.Id)
{
//relation data is loaded for searched contact because of attribute,
//but it must be manually maintained in creation
Console.WriteLine(searchedContact.Firstname); //Matti
}
}
}
}
}
|