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.
Copyright © 2018 Logo Yazılım