a099d68915
Initial Release; Includes Database and MVC refactoring
204 lines
7.8 KiB
C#
204 lines
7.8 KiB
C#
using Disco.Data.Repository;
|
|
using Disco.Models.Repository;
|
|
using System;
|
|
namespace Disco.BI.DocumentTemplateBI
|
|
{
|
|
public class DocumentUniqueIdentifier
|
|
{
|
|
private bool? _loadedComponentsOk;
|
|
private DocumentTemplate _documentTemplate;
|
|
private object _data;
|
|
private string _dataDescription;
|
|
public string TemplateTypeId { get; private set; }
|
|
public string DataId { get; private set; }
|
|
public string DocumentUniqueId
|
|
{
|
|
get
|
|
{
|
|
return string.Format("{0}|{1}", this.TemplateTypeId, this.DataId);
|
|
}
|
|
}
|
|
public string CreatorId { get; private set; }
|
|
public System.DateTime TimeStamp { get; private set; }
|
|
public int Page { get; private set; }
|
|
public string Tag { get; private set; }
|
|
public DocumentTemplate DocumentTemplate
|
|
{
|
|
get
|
|
{
|
|
bool flag = this._loadedComponentsOk.HasValue && this._loadedComponentsOk.Value;
|
|
if (flag)
|
|
{
|
|
return this._documentTemplate;
|
|
}
|
|
throw new System.Exception("Document Unique Identifier Components not loaded or invalid");
|
|
}
|
|
}
|
|
public object Data
|
|
{
|
|
get
|
|
{
|
|
bool flag = this._loadedComponentsOk.HasValue && this._loadedComponentsOk.Value;
|
|
if (flag)
|
|
{
|
|
return this._data;
|
|
}
|
|
throw new System.Exception("Document Unique Identifier Components not loaded or invalid");
|
|
}
|
|
}
|
|
public string DataDescription
|
|
{
|
|
get
|
|
{
|
|
bool flag = this._loadedComponentsOk.HasValue && this._loadedComponentsOk.Value;
|
|
if (flag)
|
|
{
|
|
return this._dataDescription;
|
|
}
|
|
throw new System.Exception("Document Unique Identifier Components not loaded or invalid");
|
|
}
|
|
}
|
|
public string DataScope { get; private set; }
|
|
public static bool IsDocumentUniqueIdentifier(string UniqueIdentifier)
|
|
{
|
|
return UniqueIdentifier.StartsWith("Disco|", System.StringComparison.InvariantCultureIgnoreCase);
|
|
}
|
|
public DocumentUniqueIdentifier(string TemplateTypeId, string DataId, string CreatorId, DateTime TimeStamp, int? Page = null, string Tag = null)
|
|
{
|
|
this.Tag = Tag;
|
|
this.TemplateTypeId = TemplateTypeId;
|
|
this.DataId = DataId;
|
|
this.CreatorId = CreatorId;
|
|
this.TimeStamp = TimeStamp;
|
|
this.Page = Page ?? 0;
|
|
}
|
|
public DocumentUniqueIdentifier(string UniqueIdentifier, string Tag)
|
|
{
|
|
if (!DocumentUniqueIdentifier.IsDocumentUniqueIdentifier(UniqueIdentifier))
|
|
{
|
|
throw new System.ArgumentException("Invalid Document Unique Identifier", "UniqueIdentifier");
|
|
}
|
|
this.Tag = Tag;
|
|
string[] s = UniqueIdentifier.Split(new char[] { '|' });
|
|
string left = s[1].ToUpper();
|
|
if (left == "AT" || left == "1")
|
|
{
|
|
if (s.Length >= 3)
|
|
{
|
|
this.TemplateTypeId = s[2];
|
|
}
|
|
if (s.Length >= 4)
|
|
{
|
|
this.DataId = s[3];
|
|
}
|
|
if (s.Length >= 5)
|
|
{
|
|
this.CreatorId = s[4];
|
|
}
|
|
if (s.Length >= 6)
|
|
{
|
|
System.DateTime timeStamp;
|
|
if (System.DateTime.TryParse(s[5], out timeStamp))
|
|
{
|
|
this.TimeStamp = timeStamp;
|
|
}
|
|
}
|
|
if (s.Length >= 7)
|
|
{
|
|
int page = 0;
|
|
if (int.TryParse(s[6], out page))
|
|
{
|
|
this.Page = page;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
throw new System.ArgumentException(string.Format("Invalid Document Unique Identifier Version ({0})", s[1]), "UniqueIdentifier");
|
|
}
|
|
public bool LoadComponents(DiscoDataContext Database)
|
|
{
|
|
bool LoadComponents;
|
|
if (!this._loadedComponentsOk.HasValue)
|
|
{
|
|
string scopeType;
|
|
if (this.TemplateTypeId.StartsWith("--"))
|
|
{
|
|
string templateTypeId = this.TemplateTypeId;
|
|
switch (this.TemplateTypeId)
|
|
{
|
|
case "--DEVICE":
|
|
scopeType = DocumentTemplate.DocumentTemplateScopes.Device;
|
|
break;
|
|
case "--JOB":
|
|
scopeType = DocumentTemplate.DocumentTemplateScopes.Job;
|
|
break;
|
|
case "--USER":
|
|
scopeType = DocumentTemplate.DocumentTemplateScopes.User;
|
|
break;
|
|
default:
|
|
scopeType = null;
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this._documentTemplate = Database.DocumentTemplates.Find(this.TemplateTypeId);
|
|
if (this._documentTemplate != null)
|
|
{
|
|
scopeType = this._documentTemplate.Scope;
|
|
}
|
|
else
|
|
{
|
|
scopeType = null;
|
|
}
|
|
}
|
|
if (scopeType != null)
|
|
{
|
|
this.DataScope = scopeType;
|
|
switch (scopeType)
|
|
{
|
|
case DocumentTemplate.DocumentTemplateScopes.Device:
|
|
Device d = Database.Devices.Find(this.DataId);
|
|
if (d != null)
|
|
{
|
|
this._data = d;
|
|
this._dataDescription = d.SerialNumber;
|
|
this._loadedComponentsOk = true;
|
|
LoadComponents = true;
|
|
return LoadComponents;
|
|
}
|
|
break;
|
|
case DocumentTemplate.DocumentTemplateScopes.Job:
|
|
Job i = Database.Jobs.Find(int.Parse(this.DataId));
|
|
if (i != null)
|
|
{
|
|
this._data = i;
|
|
this._dataDescription = i.Id.ToString();
|
|
this._loadedComponentsOk = true;
|
|
LoadComponents = true;
|
|
return LoadComponents;
|
|
}
|
|
break;
|
|
case DocumentTemplate.DocumentTemplateScopes.User:
|
|
User u = Database.Users.Find(this.DataId);
|
|
if (u != null)
|
|
{
|
|
this._data = u;
|
|
this._dataDescription = u.DisplayName;
|
|
this._loadedComponentsOk = true;
|
|
LoadComponents = true;
|
|
return LoadComponents;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
this._loadedComponentsOk = false;
|
|
}
|
|
LoadComponents = this._loadedComponentsOk.Value;
|
|
return LoadComponents;
|
|
}
|
|
}
|
|
}
|