Makale Özeti

Bu makalemizde sizlere daha önceden oluşturulmuş bir notun eğer ekli dökümanları varsa onlarla birlikte kopyalanmasını anlatacağım. Bir senaryo üzerinden gidersek daha iyi olacak. Şimdi senaryomuz şöyle olsun : Müşteri adayı olarak tanımladığımız bir kaydımız olsun. Bunun içerisine notlar kısmında ilgili döküman ve resimleri kaydettik. Artık Müşteri Adayımızı, Abone Şahıs’a dönüştüreceğiz. Ancak CRM’in kendi içerisinde şuan için notlar kısmınıda yeni kayda taşıma kısmı yok. O zaman yazacağımız bir plugin içerisine aşağıdaki kodları yerleştirmemiz gerekmektedir.

Makale

Merhaba Arkadaşlar,

Bu makalemizde sizlere daha önceden oluşturulmuş bir notun eğer ekli dökümanları varsa onlarla birlikte kopyalanmasını anlatacağım.

Bir senaryo üzerinden gidersek daha iyi olacak. Şimdi senaryomuz şöyle olsun : Müşteri adayı olarak tanımladığımız bir kaydımız olsun. Bunun içerisine notlar kısmında ilgili döküman ve resimleri kaydettik. Artık Müşteri Adayımızı, Abone Şahıs’a dönüştüreceğiz. Ancak CRM’in kendi içerisinde şuan için notlar kısmınıda yeni kayda taşıma kısmı yok. O zaman yazacağımız bir plugin içerisine aşağıdaki kodları yerleştirmemiz gerekmektedir.

//Öncelikle bir duyuru nesnesi oluşturup kopyalanacak notlar kısmının değerlerini bu nesneye atıyoruz
annotation newAnnotation = new annotation
();
newAnnotation
.langid = sourceAnnotation.
langid;
newAnnotation
.notetext = sourceAnnotation.
notetext;
newAnnotation
.subject = sourceAnnotation.
subject;
newAnnotation
.objecttypecode = new EntityNameReference
();
newAnnotation
.objecttypecode.Value = destinationEntityName;

//Kopyalanacak nesnenin unique değerinide yeni oluşturduğumuz nesneye atıyoruz
newAnnotation
.objectid = new Lookup();
newAnnotation
.objectid.type =
destinationEntityName;
newAnnotation
.objectid.Value = destinationEntityId;

//Artık Not’umuzu oluşturabiliriz. Bunun için CRM ile gelen Servislerin Create methodunu kullanıyoruz
Guid newAnnotationId = _crmService.Create(newAnnotation);

//Eğer varsa ekli dökümanları almak için kontrol yapıyoruz
if (sourceAnnotation.isdocument.Value)
{

//Ekli olan dosyaları çeken method
byte[] data = GetAnnotationAttachment(sourceAnnotation.annotationid.Value);

string base64data = System.Convert.ToBase64String(data);
//Notumuza dosyaları ekleyen method

AddAttachment(newAnnotationId, base64data, sourceAnnotation.mimetype, sourceAnnotation.filename);
}

 

//Gönderilen Not değerine göre ekli dosya olup olmadığını kontrol eden method. Geriye byte dizisi döndürüyoruz

private byte[] GetAnnotationAttachment(Guid annotationId)
{
Guid attachid =
annotationId;
int objecttypecode = 5;

string url = _serverUrl + "Activities/Attachment/download.aspx?AttachmentType=" + objecttypecode.ToString() + "&AttachmentId=" + attachid.ToString();
System
.Net.WebClient myWebClient = new System.Net.WebClient
();
myWebClient
.Credentials = System.Net.CredentialCache.
DefaultNetworkCredentials;
return myWebClient.
DownloadData(url);
}

 

//Geri dönen byte dizisini Not’umuza ekliyoruz.

private void AddAttachment(Guid parentAnntotationId, string attachmentBase64Data, string mimeType, string attachmentFileName)
{
UploadFromBase64DataAnnotationRequest upload = new UploadFromBase64DataAnnotationRequest
();
upload
.AnnotationId =
parentAnntotationId;
upload
.FileName =
attachmentFileName;
upload
.MimeType =
mimeType;
upload
.Base64Data =
attachmentBase64Data;

_crmService
.
Execute(upload);
}

 

// CRM’de dosyalar eklenirken dosya uzantısına göre eklenir. Bu method ile de CRM’e dosyamızın uzantısını söylüyoruz

public string GetMimeType(byte[] fileBytes)
{
try
{
ContentInfo info = new ContentInfo
(fileBytes);
return info.ContentType.
Value;
}
catch
{
return "application/octet-stream"
;
}
}

 

Thanks Dujen.

 

Bir makalenin daha sonuna geldik. Makale ile ilgili aklınıza takılan kısımları bana aşağıdaki mail adresimden sorabilirsiniz.

 

Sağlıcakla kalın.

 

Volkan KORKMAZ
Microsoft Certified Business Management Solutions Specialist

volkankorkmaz@gmail.com
http://www.volkankorkmaz.net