Netsis – FormID yapısı için iki parametre almaktadır.

  • progId  (Netsis modül no)
  • refId     (Netsis program no)

App içinden Netsis'in temel formları çağrılabilmektedir. Form listesi ilerleyen zamanda burada yayınlanacaktır.

Uygulama geliştirirken geliştiricilerin işlerini kolaylaştıracak 2 sınıf var. Burada bu sınıflar anlatılacaktır.

Aşağıdaki örneklerdeki gibi veri gönderildiğinde istenen form arayüzleri çalışmaktadır.

1. JSonSerializer.cs

JSON serialize/deserialize işlerini yapan sınıf

JSonSerializer.cs
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LPLugin
{
    public static class JSonSerializer<T>
    {
        public static string Serialize(T obj)
        {
            return JsonConvert.SerializeObject(obj, new JsonSerializerSettings()
            {
                NullValueHandling = NullValueHandling.Ignore
            });
        }
        public static T DeSerialize(string xml)
        {
            return (T)JsonConvert.DeserializeObject<T>(xml, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore });
        }
    }
}

2.LPluginManager.cs

“ILogoPluginHost” ile dönen JSON yanıtlarının karşılığı olan 

  • sınıfları ve bu sınıfların yönetimini kolaylaştıran fonksiyonlar

testapp uygulamasını inceleyebilirsiniz.

LPluginManager.cs
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace LPLugin {
 public class LPluginManager {
  private ILogoPluginHost _host;
  public string RestVersion = "v2";
  public LPluginManager(ILogoPluginHost host) {
   _host = host;
  }
  public ConnectionConfig GetConnectionConfig() {
   return JSonSerializer < ConnectionConfig > .DeSerialize(GetConfigResponse(ConfigTypes.connection));
  }
  public UserConfig GetUserConfig() {
   return JSonSerializer < UserConfig > .DeSerialize(GetConfigResponse(ConfigTypes.user));
  }
  public Widget GetSettingsConfig(string progid, int tag) {
   return JSonSerializer < Widget > .DeSerialize(_host.GetConfig(
    new WidgetConfigReq() {
     type = ConfigTypes.settings.ToString(),
      progid = progid,
      tag = tag
    }.Serialize()
   ));
  }
  public string OpenForm(string formId, string refId = "0") {
   return _host.ExecuteAction(new HostExecutoinReq() {
    actType = HostActionType.openForm.ToString(),
     formId = formId,
     refId = refId
   }.Serialize());
  }
  public string RestCall(RestMethod method, string urlPram, string content) {
   return _host.ExecuteAction(new HostExecutoinReq() {
    actType = HostActionType.restApi.ToString(),
     restMethod = method.ToString(),
     urlParam = urlPram,
     content = content,
     restApiVer = RestVersion,
     firmId = "1",
     progId = "Egitim2.Host"
   }.Serialize());
  }
  public AppSetting GetAppSettingConfig() {
   return JSonSerializer < AppSetting > .DeSerialize(GetConfigResponse(ConfigTypes.appInfo));
  }
  public string GetConfigResponse(ConfigTypes configType) {
   return _host.GetConfig(
    new WidgetConfigReq() {
     type = configType.ToString()
    }.Serialize()
   );
  }
  public enum ConfigTypes {
   restapiversion,
   settings,
   user,
   connection,
   appInfo
  }
  public enum HostActionType {
   restApi,
   openForm
  }
  public enum RestMethod {
   POST,
   GET,
   PUT,
   DELETE
  }
 }
 #
 region[LPlugin icin grekli olan MODEL ler]
 public class ShowWidgetRsp: BaseSerializer < ShowWidgetRsp > {
  public string handle {
   get;
   set;
  }
 }
 public class ConnectionConfig: BaseSerializer < ConnectionConfig > {
  public string username {
   get;
   set;
  }
  public string password {
   get;
   set;
  }
  public long dbtype {
   get;
   set;
  }
  public string servername {
   get;
   set;
  }
  public string dbname {
   get;
   set;
  }
 }
 public class RestapiUser: BaseSerializer < RestapiUser > {
  public string Username {
   get;
   set;
  }
  public string password {
   get;
   set;
  }
  public int NBranchcode {
   get;
   set;
  }
  public string NDbname {
   get;
   set;
  }
  public string NDbuser {
   get;
   set;
  }
  public string NDbpassword {
   get;
   set;
  }
  public int NDbtype {
   get;
   set;
  }
  public string SSOToken {
   get;
   set;
  }
  public string token {
   get;
   set;
  }
 }
 public class AppSetting: BaseSerializer < AppSetting > {
  public string name {
   get;
   set;
  }
  public string group {
   get;
   set;
  }
 }
 public class UserConfig: BaseSerializer < UserConfig > {
  public string Username {
   get;
   set;
  }
  public int UserId {
   get;
   set;
  }
  public string UserPass {
   get;
   set;
  }
  public string Company {
   get;
   set;
  }
  public int Branch {
   get;
   set;
  }
  public string SSOToken {
   get;
   set;
  }
 }
 public class HostExecutoinReq: BaseSerializer < HostExecutoinReq > {
  public string actType {
   get;
   set;
  } //restApi,openForm
  public string formId {
   get;
   set;
  }
  public string refId {
   get;
   set;
  }
  public string result_code {
   get;
   set;
  }
  public string result_message {
   get;
   set;
  }
  public string username {
   get;
   set;
  }
  public string password {
   get;
   set;
  }
  public string firmId {
   get;
   set;
  }
  public string restMethod {
   get;
   set;
  }
  public string urlParam {
   get;
   set;
  }
  public string content {
   get;
   set;
  }
  public string restApiVer {
   get;
   set;
  }
  public string progId {
   get;
   set;
  }
 }
 public class WidgetConfigReq: BaseSerializer < WidgetConfigReq > {
  public string type {
   get;
   set;
  } //restapiversion,settings,user,connection
  public string progid {
   get;
   set;
  }
  public int tag {
   get;
   set;
  }
 }
 public class ShowWidgetReq: BaseSerializer < ShowWidgetReq > {
  public int Tag {
   get;
   set;
  }
  public long Parent {
   get;
   set;
  }
 }
 public class WidgetSetting: BaseSerializer < WidgetSetting > {
  public string name {
   get;
   set;
  }
  public string typ {
   get;
   set;
  }
  public string value {
   get;
   set;
  }
 }
 public class Widget: BaseSerializer < Widget > {
  public int tag {
   get;
   set;
  }
  public string name {
   get;
   set;
  }
  public string header {
   get;
   set;
  }
  public string description {
   get;
   set;
  }
  public string image {
   get;
   set;
  }
  public IList < WidgetSetting > settings {
   get;
   set;
  }
  public Widget() {
   settings = new List < WidgetSetting > ();
  }
  public void LoadImage(string imagePath) {
   if (File.Exists(imagePath))
    image = ImageToBase64(File.ReadAllBytes(imagePath));
  }
  public void LoadImage(byte[] imageBytes) {
   image = ImageToBase64(imageBytes);
  }
  public void LoadImage(Image _image, System.Drawing.Imaging.ImageFormat format) {
   image = ImageToBase64(_image, format);
  }
  public void LoadImage(Icon icon) {
   image = ImageToBase64(IconToBytes(icon));
  }
  public string ImageToBase64(Image image, System.Drawing.Imaging.ImageFormat format) {
   using(MemoryStream ms = new MemoryStream()) {
    // Convert Image to byte[]
    image.Save(ms, format);
    byte[] imageBytes = ms.ToArray();
    return ImageToBase64(imageBytes);
   }
  }
  public string ImageToBase64(byte[] imageBytes) {
   string base64String = Convert.ToBase64String(imageBytes);
   return base64String;
  }
  public string ImageToBase64(string plainText) {
   var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
   return ImageToBase64(plainTextBytes);
  }
  public static byte[] IconToBytes(Icon icon) {
   using(MemoryStream ms = new MemoryStream()) {
    icon.Save(ms);
    return ms.ToArray();
   }
  }
 }#
 endregion
 # region[Base Sinif ve Common sinif icermektedir.]
 public class BaseSerializer < T > {
  public string Serialize() {
   return JSonSerializer < T > .Serialize((T)(object) this);
  }
 }
 public static class Common {
  public static TTarget MapTo < TSource, TTarget > (this TSource aSource, TTarget aTarget) {
   const BindingFlags flags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic;
   var srcFields = (from PropertyInfo aProp in typeof(TSource).GetProperties(flags) where aProp.CanRead select new {
    Name = aProp.Name,
     Type = Nullable.GetUnderlyingType(aProp.PropertyType) ? ? aProp.PropertyType
   }).ToList();
   var trgFields = (from PropertyInfo aProp in aTarget.GetType().GetProperties(flags) where aProp.CanWrite select new {
    Name = aProp.Name,
     Type = Nullable.GetUnderlyingType(aProp.PropertyType) ? ? aProp.PropertyType
   }).ToList();
   var commonFields = srcFields.Intersect(trgFields).ToList();
   foreach(var aField in commonFields) {
    var value = aSource.GetType().GetProperty(aField.Name).GetValue(aSource, null);
    PropertyInfo propertyInfos = aTarget.GetType().GetProperty(aField.Name);
    propertyInfos.SetValue(aTarget, value, null);
   }
   return aTarget;
  }
  public static TTarget CreateMapped < TSource, TTarget > (this TSource aSource) where TTarget: new() {
   return aSource.MapTo(new TTarget());
  }
 }#
 endregion
} 

GetWidgets için

ShowWidget için

RestCall için

OpenForm için

Config için

 Not: Buradaki arayüzlerin .Net DLL olarak hazırlanması planlanmaktadır. Geliştrime sırasında json parse- send gibi işlemleri yaptırabileceksiniz.

Telif HakkıKullanım KoşullarıGizlilik
Copyright © 2018 Logo Yazılım