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 dbFiles = storageService.ListFiles(sourceFolder); List copyFileGuids = new List(); 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; } } }