This commit is contained in:
Drechsler, Meik
2025-08-14 16:20:42 +02:00
parent fb150ac204
commit 3a001d0e55
33 changed files with 2405 additions and 0 deletions

View File

@@ -0,0 +1,178 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
using update4u.SPS.DataLayer;
using update4u.SPS.DatabaseFileStorage;
using update4u.SPS.DataLayer.Schema.Internal;
using QRCoder;
using System.Drawing;
using System.IO;
using System.Net.Http;
using System.Net;
namespace C4IT.API.Helper
{
[RoutePrefix("api/c4it/helper")]
public class HelperController : ApiController
{
[Route("copyFiles"), HttpGet]
public string copyFiles(Guid sourceEOID, Guid targetEOID)
{
StorageService storageService = new StorageService();
if (!sourceEOID.Equals(Guid.Empty) && !targetEOID.Equals(Guid.Empty))
{
try
{
Guid sourceTypeID = new Guid(FragmentRequestBase.SimpleLoad(SPSDataEngineSchemaReader.ClassGetIDFromName("SPSCommonClassBase"), "typeid", "[expression-objectid]='" + sourceEOID.ToString() + "'").Rows[0]["typeid"].ToString());
Guid targetTypeID = new Guid(FragmentRequestBase.SimpleLoad(SPSDataEngineSchemaReader.ClassGetIDFromName("SPSCommonClassBase"), "typeid", "[expression-objectid]='" + targetEOID.ToString() + "'").Rows[0]["typeid"].ToString());
string targetFolder = StorageService.GetFolderName(targetTypeID, targetEOID);
string sourceFolder = StorageService.GetFolderName(sourceTypeID, sourceEOID);
List<DatabaseFile> dbFiles = storageService.ListFiles(sourceFolder);
List<Guid> copyFileGuids = new List<Guid>();
foreach (DatabaseFile dbFile in dbFiles)
{
copyFileGuids.Add(dbFile.FileGuid);
}
storageService.CopyFiles(copyFileGuids, targetFolder);
}
catch (Exception e)
{
return e.Message;
}
}
return "ok";
}
[Route("moveFiles"), HttpGet]
public string moveFiles(Guid sourceEOID, Guid targetEOID)
{
StorageService storageService = new StorageService();
if (!sourceEOID.Equals(Guid.Empty) && !targetEOID.Equals(Guid.Empty)) {
try{
Guid sourceTypeID = new Guid(FragmentRequestBase.SimpleLoad(SPSDataEngineSchemaReader.ClassGetIDFromName("SPSCommonClassBase"), "typeid", "[expression-objectid]='" + sourceEOID.ToString() + "'").Rows[0]["typeid"].ToString());
Guid targetTypeID = new Guid(FragmentRequestBase.SimpleLoad(SPSDataEngineSchemaReader.ClassGetIDFromName("SPSCommonClassBase"), "typeid", "[expression-objectid]='" + targetEOID.ToString() + "'").Rows[0]["typeid"].ToString());
string targetFolder = StorageService.GetFolderName(targetTypeID, targetEOID);
string sourceFolder = StorageService.GetFolderName(sourceTypeID, sourceEOID);
storageService.RenameFolder(sourceFolder, targetFolder);
}
catch (Exception e)
{
return e.Message;
}
}
return "ok";
}
[Route("unreadActivity"), HttpPost]
public string unreadActivity(Guid[] activiesEOID)
{
string log = activiesEOID.Length.ToString();
if (activiesEOID.Length > 0)
{
try
{
foreach (Guid activityEOID in activiesEOID)
{
Guid typeId = new Guid(FragmentRequestBase.SimpleLoad(SPSDataEngineSchemaReader.ClassGetIDFromName("SPSCommonClassBase"), "typeid", "[expression-objectid]='" + activityEOID.ToString() + "'").Rows[0]["typeid"].ToString());
SPSObject activity = ObjectRequest.GetSPSObject(typeId, activityEOID);
log += " / " + activity.GetAttribute("SPSActivityClassBase", "TicketNumber");
activity.UpdateAttribute("SPSActivityClassBase","NewInformationReceived",DBNull.Value);
activity.Update();
}
}catch(Exception e){
return log + " / " + e.Message;
}
}
return log;
}
[Route("genQrCode"),HttpGet]
public HttpResponseMessage genQRCode(string qrText)
{
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(qrText,
QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrCode.GetGraphic(20);
var dataStream = new MemoryStream(BitmapToBytes(qrCodeImage));
var fileName = Path.GetInvalidFileNameChars().Aggregate(qrText.Substring(0, 10), (current, c) => current.Replace(c.ToString(), string.Empty));
if (String.IsNullOrEmpty(fileName))
{
fileName = "dummy";
}
HttpResponseMessage httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK);
httpResponseMessage.Content = new StreamContent(dataStream);
httpResponseMessage.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
httpResponseMessage.Content.Headers.ContentDisposition.FileName = fileName+".png";
httpResponseMessage.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/png");
return httpResponseMessage;
}
// This method is for converting bitmap into a byte array
private static byte[] BitmapToBytes(Bitmap img)
{
using (MemoryStream stream = new MemoryStream())
{
img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
return stream.ToArray();
}
}
[Route("copyObject"), HttpGet]
public string copyObject(Guid objectToCopy)
{
string log = "";
try
{
Guid sourceTypeID = new Guid(FragmentRequestBase.SimpleLoad(SPSDataEngineSchemaReader.ClassGetIDFromName("SPSCommonClassBase"), "typeid", "[expression-objectid]='" + objectToCopy.ToString() + "'").Rows[0]["typeid"].ToString());
SPSObject oldObject = ObjectRequest.GetSPSObject(sourceTypeID, objectToCopy);
SPSObject newObject = (SPSObject)oldObject.CreateCopy(true);
IAttribute k = newObject.ConfigurationItem.AutoNumberAttribute;
string attrib = k.DbColumnName;
IDataDefinition dd = k.BelongsToSchemaObjectClass;
newObject.UpdateAttribute(dd.Name, attrib, DBNull.Value);
log = attrib + " / " + dd.Name;
newObject.Update();
}catch(Exception e)
{
return e.Message;
}
return log;
}
[Route("createUninstall"), HttpPost]
public bool createUninstall(Guid[] installBookings)
{
return true;
}
}
}