This commit is contained in:
2025-06-04 14:17:32 +07:00
parent 4c953f7efb
commit 5beb66f11a
257 changed files with 72800 additions and 2 deletions

View File

@ -0,0 +1,12 @@
namespace ManagementApp.Models
{
public interface IPaging
{
bool IsFirstQuery { set; get; }
int PageSize { set; get; }
int PageNumber { set; get; }
int MaxRow { set; get; }
}
}

View File

@ -0,0 +1,17 @@
namespace ManagementApp.Models
{
public class MessageHeader
{
public int ID { set; get; }
public string Message { set; get; }
/// <summary>
/// Return Message Status
/// 0 is Error
/// 1 is Success
/// </summary>
public int Status { set; get; }
}
}

View File

@ -0,0 +1,17 @@
namespace ManagementApp.Models
{
public abstract class ModelBase: IPaging
{
public abstract Task<MessageHeader> AddAsync();
public abstract Task<MessageHeader> UpdateAsync();
public abstract Task<MessageHeader> DeleteAsync();
public bool IsFirstQuery { set; get; }
public int PageSize { get; set; }
public int PageNumber { get; set; }
public int MaxRow { get; set; }
}
}

View File

@ -0,0 +1,75 @@
using Azure.Identity;
using Microsoft.Graph;
using Microsoft.Graph.Models;
using Microsoft.Kiota.Abstractions;
using System.IO.Pipes;
using System.Runtime.CompilerServices;
using System.Text;
using System.Web;
namespace ManagementApp.Models.Services
{
public class Microsoft365Service
{
public int Status { set; get; } = -1;
private GraphServiceClient graphClient;
private string tenantID;
private string clientID;
private string[] scope;
private string clientSecret;
private string secretID;
private Date secretExpiresDate;
public string Host { set; get; }
public Microsoft365Service() {
this.clientID = "10012dab-5561-4cef-9b7a-a7f2c0bea704";
this.tenantID = "8c8a0bb8-9582-4322-b9fc-11d031e5702a";
this.scope = new[] { "https://graph.microsoft.com/.default" };
this.clientSecret = "RRi8Q~CvY1GmY8~zKDGv6bdeBSyVvAHy4nOcCcKd";
this.secretID = "d1b4e1a0-faae-42c1-b5e4-c4a26a345c5c";
this.secretExpiresDate = new Date(2025, 8, 12);
this.Host = string.Empty;
}
public string Message { get; set; } = "";
public async Task<UserCollectionResponse?> GetUser()
{
var users = await graphClient.Users.GetAsync(u => { u.QueryParameters.Select = ["displayName", "jobTitle"]; });
return users;
}
public async Task<SiteCollectionResponse?> GetDrives()
{
var sites = await graphClient.Sites.GetAsync();
var siteInfor = (sites != null) ? sites.Value.Where(a => a.IsPersonalSite == false && a.DisplayName == "Storage Backup").FirstOrDefault() : null;
//graphClient.Sites[""].Drives.GetAsync()
return sites;
}
public async Task<string> ConnectMicrosoft365()
{
await Task.Run(() =>
{
var options = new ClientSecretCredentialOptions
{
AuthorityHost = AzureAuthorityHosts.AzurePublicCloud,
};
var clientSecretCredential = new ClientSecretCredential(
this.tenantID, this.clientID, clientSecret, options);
this.graphClient = new GraphServiceClient(clientSecretCredential, this.scope);
this.Status = 0;
});
return "OK";
}
}
}

View File

@ -0,0 +1,113 @@
using Dapper;
using ManagementApp.Dapper.AExtentions;
using ManagementApp.DBModels;
using Microsoft.AspNetCore.Mvc;
using MySqlConnector;
using Newtonsoft.Json;
using System.ComponentModel.DataAnnotations;
using System.Data.Common;
namespace ManagementApp.Models
{
public class TypeStorageServerModel: ModelBase, IPaging
{
public int ID { set; get; }
public string Name { get; set; }
public override async Task<MessageHeader> AddAsync()
{
var f = new MessageHeader();
try
{
using (var con = new MySqlConnection(DBManagement.GetConnectionString()))
{
await con.OpenAsync();
await con.Insert(new TypeStorageServer { TypeName = Name });
}
f.Status = 1;
f.Message = "OK";
}
catch(DbException ex)
{
f.Status = 0;
f.Message = ex.Message;
f.ID = 1001;
}
return f;
}
public override Task<MessageHeader> DeleteAsync()
{
throw new NotImplementedException();
}
public override async Task<MessageHeader> UpdateAsync()
{
var f = new MessageHeader();
try
{
using (var con = new MySqlConnection(DBManagement.GetConnectionString()))
{
await con.OpenAsync();
await con.Update(new TypeStorageServer { IdTypeStorageServer = ID, TypeName = Name });
}
f.Status = 1;
f.Message = "OK";
}
catch (DbException ex)
{
f.Status = 0;
f.Message = ex.Message;
f.ID = 1002;
}
return f;
}
public async Task<IActionResult> GetTypeStoragesAsync()
{
using (var con = new MySqlConnection(DBManagement.GetConnectionString()))
{
await con.OpenAsync();
if (IsFirstQuery)
{
using (var multi = await con
.QueryMultipleAsync("SELECT COUNT(*) FROM TypeStorageServer;" +
"SELECT * FROM TypeStorageServer ORDER BY idTypeStorageServer DESC " +
"OFFSET @Offset ROWS FETCH NEXT @PageSize ROWS ONLY", new { Offset = (PageNumber - 1) * PageSize, PageSize = this.PageSize }))
{
int maxRow = await multi.ReadSingleAsync<int>();
IEnumerable<TypeStorageServer> types = await multi.ReadAsync<TypeStorageServer>();
return new JsonResult(new
{
mrows = maxRow,
data = JsonConvert.SerializeObject(types)
});
}
}
else
{
IEnumerable<TypeStorageServer> t = (await con
.QueryAsync<TypeStorageServer>("SELECT * FROM TypeStorageServer ORDER BY idTypeStorageServer DESC " +
"OFFSET @Offset ROWS FETCH NEXT @PageSize ROWS ONLY", new { Offset = (PageNumber - 1) * PageSize, PageSize = this.PageSize }));
return new JsonResult(new
{
data = JsonConvert.SerializeObject(t)
});
}
}
}
public static async Task<IActionResult> GetAllTypeStorage()
{
using (var con = new MySqlConnection(DBManagement.GetConnectionString()))
{
IEnumerable<dynamic> t = await con
.QueryAsync("SELECT idTypeStorageServer AS ID, TypeName AS Type FROM TypeStorageServer ORDER BY idTypeStorageServer ASC");
return new JsonResult(new
{
data = JsonConvert.SerializeObject(t)
});
}
}
}
}

View File

@ -0,0 +1,117 @@

using Dapper;
using ManagementApp.Dapper.AExtentions;
using ManagementApp.DBModels;
using Microsoft.AspNetCore.Mvc;
using MySqlConnector;
using Newtonsoft.Json;
using System.Data.Common;
namespace ManagementApp.Models
{
public class ValidationDomainModel: ModelBase
{
public int ID { set; get; }
public int PortNumber { set; get; }
public string Protocol { set; get; }
public string Name { set; get; }
public override async Task<MessageHeader> AddAsync()
{
var f = new MessageHeader();
try
{
using (var con = new MySqlConnection(DBManagement.GetConnectionString()))
{
await con.OpenAsync();
await con.Insert(new ValidationDomain { DomainName = Name, PortNumber = this.PortNumber, Protocol = this.Protocol });
}
f.Status = 1;
f.Message = "OK";
}
catch (DbException ex)
{
f.Status = 0;
f.Message = ex.Message;
f.ID = 61031;
}
return f;
}
public async Task<IActionResult> GetValidationDomainAsync()
{
using (var con = new MySqlConnection(DBManagement.GetConnectionString()))
{
await con.OpenAsync();
if (IsFirstQuery)
{
using (var multi = await con
.QueryMultipleAsync("SELECT COUNT(*) FROM ValidationDomain;" +
"SELECT * FROM ValidationDomain ORDER BY idValidationDomain DESC " +
"OFFSET @Offset ROWS FETCH NEXT @PageSize ROWS ONLY", new { Offset = (PageNumber - 1) * PageSize, PageSize = this.PageSize }))
{
int maxRow = await multi.ReadSingleAsync<int>();
IEnumerable<ValidationDomain> types = await multi.ReadAsync<ValidationDomain>();
return new JsonResult(new
{
mrows = maxRow,
data = JsonConvert.SerializeObject(types)
});
}
}
else
{
IEnumerable<ValidationDomain> t = (await con
.QueryAsync<ValidationDomain>("SELECT * FROM ValidationDomain ORDER BY idValidationDomain DESC " +
"OFFSET @Offset ROWS FETCH NEXT @PageSize ROWS ONLY", new { Offset = (PageNumber - 1) * PageSize, PageSize = this.PageSize }));
return new JsonResult(new
{
data = JsonConvert.SerializeObject(t)
});
}
}
}
public override Task<MessageHeader> DeleteAsync()
{
throw new NotImplementedException();
}
public override async Task<MessageHeader> UpdateAsync()
{
var f = new MessageHeader();
try
{
using (var con = new MySqlConnection(DBManagement.GetConnectionString()))
{
await con.OpenAsync();
await con.Update(new ValidationDomain { IdValidationDomain = ID, DomainName = Name, PortNumber = this.PortNumber, Protocol = this.Protocol });
}
f.Status = 1;
f.Message = "OK";
}
catch (DbException ex)
{
f.Status = 0;
f.Message = ex.Message;
f.ID = 61032;
}
return f;
}
public static async Task<IActionResult> GetAllValidationDomain()
{
using (var con = new MySqlConnection(DBManagement.GetConnectionString()))
{
await con.OpenAsync();
IEnumerable<dynamic> t = (await con
.QueryAsync("SELECT IDValidationDomain As ID, DomainName As Name FROM ValidationDomain ORDER BY idValidationDomain DESC"));
return new JsonResult(new
{
data = JsonConvert.SerializeObject(t)
});
}
}
}
}