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ıyoruzannotation 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ıyoruznewAnnotation.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ıyoruzGuid newAnnotationId = _crmService.Create(newAnnotation);
//Eğer varsa ekli dökümanları almak için kontrol yapıyoruzif (sourceAnnotation.isdocument.Value){
//Ekli olan dosyaları çeken methodbyte[] 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.