Daha önceki yazılarda asp.net csom ve flutter api ile sharepoint listelerine nasıl bağlanıldığından bahsetmiştim. Bugün ise aynı şekilde project online bağlantısı oluşturmak istiyorum.

Project Online Bağlantısı

Yazmış olduğumuz bir web veya masaüstü uygulamasında microsoft project online’a bağlanmak istiyorsak elimizde bu tenanta girebilen bir microsoft hesabı olmak zorunda. Bu microsoft hesabı ile uygulamamızla project online’a bağlanacağız.

Ancak burada önemli bir husus var. Eğer login olacağınız hesapta multi factor authentication var ise işlem değişiyor. Bu aşamada işi zorlaştırmak istemiyorsanız bu kullanıcının multi factor’unu kapatarak işlemleri kolaylaştırabilirsiniz. Eğer multi factor’u kapatmadan da login olmak istiyorum derseniz bununla ilgili farklı bir içerikte hazırlayabilirim.

İlgili kütüphaneler;

using Microsoft.SharePoint.Client;
using Microsoft.ProjectServer.Client;

Bağlantı kodları;

  string siteUrl = "https://{tenant}.sharepoint.com/sites/pwa";
  string username = "mryed@{tenant}.com";
  string password = "hesapsifresi";

              //Proje bağlantısı oluşturma
              using (ProjectContext context = new ProjectContext(siteUrl))
              {
                  SecureString securePassword = new SecureString();
                  foreach (char c in password.ToCharArray())
                  {
                      securePassword.AppendChar(c);
                  }
                context.Credentials = new SharePointOnlineCredentials(username, securePassword);
                var allprojects = context.Projects;
                context.Load(allprojects);
                context.ExecuteQuery();

                //Proje sayısını, adını ve guid id bilgilerini çekiyoruz.
                Console.WriteLine("Projects:" + allprojects.Count);
                Console.WriteLine("-----------");
                foreach (PublishedProject project in allprojects)
                {
                    Console.WriteLine("Proje Adi: " + project.Name);
                    Console.WriteLine("Proje GUID: " + project.Id);
                    Console.WriteLine("-----------");
                }
                try
                {
                      Guid projectId = new Guid("{Proje GUID}");
                      PublishedProject project = context.Projects.GetByGuid(projectId);
                      context.Load(project);
                      context.Load(project, p => p.StartDate, p => p.Description, p => p.CustomFields, p=>p.Owner);
                      context.ExecuteQuery();
                      Console.WriteLine("Projenin Başlangıç Tarihi: " + project.StartDate);
                      Console.WriteLine("Proje Açıklaması: " + project.Description);
                      Console.WriteLine("Proje Sahibi: " + project.Owner);

                  }
                  catch (Exception ex)
                  {
                      Console.WriteLine("Hata: " + ex.Message);
                  }
              }

Project Online Veri Çekme

Bu aşamada kodları kısaca anlatayım. Öncelikle string değişkenlere kullanıcı bilgilerimizi alıyoruz. Daha sonra bu bilgiler ile bir context hazırlıyoruz. Artık bu context ile işlemlerimizi yapacağız. Kodun devamında tüm projeleri çekerek kaç projemiz olduğunu, proje adlarını ve guid numaralarını yazdırıyoruz. Bu guid numarası bizim için önemli. Çünkü daha sonra bu numaralar ile projeye bağlantı kuracağız.

Projeye bağlanmak için bir try-catch blogu ekledim. Bu blog içerisinde projenin guid numarasını yazarak projeye bağlanıyorum. Bu aşamada da projenin sahibini, başlama tarihi gibi bilgileri çekiyorum.

Bu projelerin içerisinde tasklar bulunmaktadır. Bir başka yazı da bu tasklerden nasıl veri çekilir ve nasıl veri güncellenir konularına değineceğim.

Bir sonraki yazı içeriğinde görüşmek üzere…