SB 16-May-2019
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Core.Interfaces;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Bus
|
||||
{
|
||||
//=======================================================================
|
||||
class SpmAdmissionAction_Dbas : SpmAdmissionAction
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private readonly SpmUserContext userContext;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmAdmissionAction_Dbas(SpmUserContext userContext, SysId id, SysId admissionId, Spm.AdmissionActionType admissionActionType, ushort flags) :
|
||||
base(id, admissionId, admissionActionType)
|
||||
{
|
||||
this.userContext = userContext;
|
||||
Flags = flags;
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Associated data.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Core.Interfaces;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Bus
|
||||
{
|
||||
//=======================================================================
|
||||
class SpmAdmissionData_Dbas : SpmAdmissionData
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private readonly SpmUserContext userContext;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmAdmissionData_Dbas(SpmUserContext userContext, SysId admissionId, Spm.AdmissionDataType admissionDataType, ushort flags) :
|
||||
base(admissionId, admissionDataType)
|
||||
{
|
||||
this.userContext = userContext;
|
||||
Flags = flags;
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Associated data.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Core.Interfaces;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Bus
|
||||
{
|
||||
//=======================================================================
|
||||
class SpmAdmissionRole_Dbas : SpmAdmissionRole
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private readonly SpmUserContext userContext;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmAdmissionRole_Dbas(SpmUserContext userContext, SysId admissionId, Spm.EmployeeRole employeeRole, Spm.EmployeeRoleCategory employeeRoleCategory, ushort flags) :
|
||||
base(admissionId, employeeRole, employeeRoleCategory)
|
||||
{
|
||||
this.userContext = userContext;
|
||||
Flags = flags;
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Associated data.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,290 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Core.Interfaces;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
using System.Linq;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Bus
|
||||
{
|
||||
//=======================================================================
|
||||
class SpmAdmission_Dbas : SpmAdmission
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private readonly SpmUserContext userContext;
|
||||
private SpmAdmissionMgr admissionMgr = null;
|
||||
private List<SpmAdmissionRole> admissionRolesCache;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmAdmission_Dbas(SpmUserContext userContext, SysId facilityId, SysId facilityTemplateId, ushort flags) :
|
||||
base(facilityId, facilityTemplateId)
|
||||
{
|
||||
this.userContext = userContext;
|
||||
Flags = flags;
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
if (admissionMgr != null) admissionMgr.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
private SpmAdmissionMgr AdmissionMgr { get { if (admissionMgr == null) admissionMgr = SpmGlobals.System.CreateAdmissionMgr(userContext); return admissionMgr; } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Associated data.
|
||||
|
||||
// Admission Roles
|
||||
public override bool HasRole(Spm.EmployeeRole employeeRole)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(Id)) return SetErrorState("invalid item");
|
||||
if ((int)employeeRole < 1) return SetErrorState("role must be supplied");
|
||||
ISacsDatabase db = SpmGlobals.Application.GetDatabase(userContext.SessionContext);
|
||||
if (db == null)
|
||||
{
|
||||
// Filter to identify matching Roles:
|
||||
// AdmissionRole.AdmissionId = This item's Id.
|
||||
// AdmissionRole.Role = supplied value.
|
||||
List<String> filters = new List<String>();
|
||||
filters.Add(SpmDbDfn.GetColumnName(SpmDbDfn.ColumnIdx.SwmAdmissionRole_AdmissionId) + "=" + Id.ToString());
|
||||
filters.Add(SpmDbDfn.GetColumnName(SpmDbDfn.ColumnIdx.SwmAdmissionRole_Role) + "=" + ((int)employeeRole).ToString());
|
||||
return db.GetRowCount(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmissionRole), filters.Concat(" AND ", "(", ")")) > 0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public override bool HasRole(Spm.EmployeeRole employeeRole, String employeeCode)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(Id)) return SetErrorState("invalid item");
|
||||
if ((int)employeeRole < 1) return SetErrorState("role must be supplied");
|
||||
if (StringUtil.IsEmpty(employeeCode)) return SetErrorState("employee code must be supplied");
|
||||
ISacsDatabase db = SpmGlobals.Application.GetDatabase(userContext.SessionContext);
|
||||
if (db == null)
|
||||
{
|
||||
// Dummy query to set DBMS - for correct formatting of strings and dates etc.
|
||||
DbQuery queryDummy = new DbQuery(db != null ? db.DbmsType : DbmsType.General);
|
||||
|
||||
// Filter to identify matching Roles:
|
||||
// AdmissionRole.AdmissionId = This item's Id.
|
||||
// AdmissionRole.Role = supplied value.
|
||||
// AdmissionRole.EmployeeCode = supplied value.
|
||||
List<String> filters = new List<String>();
|
||||
filters.Add(SpmDbDfn.GetColumnName(SpmDbDfn.ColumnIdx.SwmAdmissionRole_AdmissionId) + "=" + Id.ToString());
|
||||
filters.Add(SpmDbDfn.GetColumnName(SpmDbDfn.ColumnIdx.SwmAdmissionRole_Role) + "=" + ((int)employeeRole).ToString());
|
||||
filters.Add(SpmDbDfn.GetColumnName(SpmDbDfn.ColumnIdx.SwmAdmissionRole_EmployeeCode) + "=" + DbQuery.FormatForCondition(employeeCode) + "'");
|
||||
return db.GetRowCount(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmissionRole), filters.Concat(" AND ", "(", ")")) > 0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public override List<SpmAdmissionRole> GetRoles()
|
||||
{
|
||||
ClearErrorState();
|
||||
if (admissionRolesCache == null)
|
||||
{
|
||||
SpmAdmissionRole.Params prmAdmissionRole = new SpmAdmissionRole.Params();
|
||||
prmAdmissionRole.AdmissionId = Id;
|
||||
prmAdmissionRole.StatusCat = SpmAdmissionRole.StatusCat.Any;
|
||||
admissionRolesCache = AdmissionMgr.GetAdmissionRoleList(prmAdmissionRole);
|
||||
admissionRolesCache.Sort();
|
||||
}
|
||||
return new List<SpmAdmissionRole>(admissionRolesCache);
|
||||
}
|
||||
public override bool SetRoles(List<SpmAdmissionRole> admissionRolesNew)
|
||||
{
|
||||
ClearErrorState();
|
||||
// Clear the existing list.
|
||||
if (admissionRolesCache != null) admissionRolesCache.Clear();
|
||||
// Copy all items from the specified list.
|
||||
admissionRolesCache = new List<SpmAdmissionRole>(admissionRolesNew);
|
||||
return !HasErrorState();
|
||||
}
|
||||
public override bool CommitRoles()
|
||||
{
|
||||
ClearErrorState();
|
||||
// Make a copy of the list so that we can keep track of the items that have been updated.
|
||||
List<SpmAdmissionRole> admissionRolesCopy = new List<SpmAdmissionRole>(admissionRolesCache);
|
||||
// Do not attempt any updates unless the list has been populated.
|
||||
if (SysId.IsValid(Id))
|
||||
{
|
||||
|
||||
admissionRolesCopy.SetSequence();
|
||||
admissionRolesCopy.SetIdentity(this);
|
||||
|
||||
// Retrieve all roles for this admission.
|
||||
SpmAdmissionRole.Params prmAdmissionRole = new SpmAdmissionRole.Params();
|
||||
prmAdmissionRole.AdmissionId = Id;
|
||||
prmAdmissionRole.StatusCat = SpmAdmissionRole.StatusCat.Any;
|
||||
foreach (SpmAdmissionRole admissionRole in admissionRolesCopy = AdmissionMgr.GetAdmissionRoleList(prmAdmissionRole))
|
||||
{
|
||||
// Does an entry for this Admission Role still exist in the list.
|
||||
if (admissionRolesCopy.FindByRoleCatSeq((Spm.EmployeeRole)prmAdmissionRole.EmployeeRole, (Spm.EmployeeRoleCategory)prmAdmissionRole.EmployeeRoleCategory, prmAdmissionRole.Seq))
|
||||
{
|
||||
if (admissionRole.Changed)
|
||||
{
|
||||
prmAdmissionRole.EmployeeRoleCategory = admissionRole.EmployeeRoleCategory;
|
||||
CopyFrom(admissionRole, admissionRole.Seq, admissionRole.EmployeeRoleId, admissionRole.EmployeeCode, admissionRole.Notes, admissionRole.Status);
|
||||
/*if (!role.Update)*/ SetErrorState("failed to update admission role");
|
||||
}
|
||||
// Remove this item from ths list.
|
||||
if (!HasErrorState()) admissionRolesCopy.Clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Admission Role no longer in the list - remove the record.
|
||||
if (admissionRole.HasErrorState()) SetErrorState("failed to remove admission role");
|
||||
}
|
||||
}
|
||||
// Any items remaining in the list must be new.
|
||||
foreach(SpmAdmissionRole admissionRoleNew in admissionRolesCopy)
|
||||
{
|
||||
if (admissionRoleNew == null) continue;
|
||||
prmAdmissionRole.AdmissionId = Id;
|
||||
prmAdmissionRole.EmployeeRole = admissionRoleNew.EmployeeRole;
|
||||
prmAdmissionRole.EmployeeRoleCategory = admissionRoleNew.EmployeeRoleCategory;
|
||||
// ToDo CopyFrom for AdmissionRole.
|
||||
CopyFrom(admissionRoleNew, admissionRoleNew.Seq, admissionRoleNew.EmployeeRoleId, admissionRoleNew.EmployeeCode, admissionRoleNew.Notes, admissionRoleNew.Status);
|
||||
/*if (!role.Update)*/ SetErrorState("failed to update admission role");
|
||||
}
|
||||
admissionRolesCopy.Clear();
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
public void CopyFrom(SpmAdmissionRole role, ushort seq, SysId employeeRoleId, String employeeCode, String notes, SaStatus status)
|
||||
{
|
||||
role.Seq = seq;
|
||||
role.EmployeeRoleId = employeeRoleId;
|
||||
role.EmployeeCode = employeeCode;
|
||||
role.Notes = notes;
|
||||
role.Status = status;
|
||||
}
|
||||
// Admission Action.
|
||||
public override bool HasAction(Spm.AdmissionActionType admissionActionType)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(Id)) return SetErrorState("invalid item");
|
||||
if ((int)admissionActionType < 1) return SetErrorState("action type must be supplied");
|
||||
ISacsDatabase db = SpmGlobals.Application.GetDatabase(userContext.SessionContext);
|
||||
if (db == null)
|
||||
{
|
||||
// Filter to identify matching Actions:
|
||||
// AdmissionAction.AdmissionId = This item's Id.
|
||||
// AdmissionAction.Type = supplied value.
|
||||
List<String> filters = new List<String>();
|
||||
filters.Add(SpmDbDfn.GetColumnName(SpmDbDfn.ColumnIdx.SwmAdmissionAction_AdmissionId) + "=" + Id.ToString());
|
||||
filters.Add(SpmDbDfn.GetColumnName(SpmDbDfn.ColumnIdx.SwmAdmissionAction_Type) + "=" + ((int)admissionActionType).ToString());
|
||||
return db.GetRowCount(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmission), filters.Concat(" AND ", "(", ")")) > 0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public override bool GetActions()
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SpmAdmissionAction> admissionActionsCopy = new List<SpmAdmissionAction>();
|
||||
if (/*!*/admissionActionsCopy.Count < 1)
|
||||
{
|
||||
SpmAdmissionAction.Params prmAdmissionAction = new SpmAdmissionAction.Params();
|
||||
prmAdmissionAction.AdmissionId = Id;
|
||||
prmAdmissionAction.StatusCat = SpmAdmissionAction.StatusCat.Any;
|
||||
foreach (SpmAdmissionAction admissionAction in admissionActionsCopy = AdmissionMgr.GetAdmissionActionList(prmAdmissionAction))
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
public override bool SetActions()
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(Id)) return false;
|
||||
ISacsDatabase db = SpmGlobals.Application.GetDatabase(userContext.SessionContext);
|
||||
return false;
|
||||
}
|
||||
public override bool CommitActions()
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// Admission Data.
|
||||
public override bool HasData(Spm.AdmissionDataType admissionDataType)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(Id)) return SetErrorState("invalid item");
|
||||
if ((int)admissionDataType < 1) return SetErrorState("data type must be supplied");
|
||||
ISacsDatabase db = SpmGlobals.Application.GetDatabase(userContext.SessionContext);
|
||||
return false;
|
||||
}
|
||||
public override bool GetDatas()
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
return false;
|
||||
}
|
||||
public override bool SetDatas()
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(Id)) return false;
|
||||
ISacsDatabase db = SpmGlobals.Application.GetDatabase(userContext.SessionContext);
|
||||
return false;
|
||||
}
|
||||
public override bool CommitDatas()
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override List<String> GetProcedureKits()
|
||||
{
|
||||
List<String> procedureKits = new List<String>();
|
||||
return procedureKits;
|
||||
}
|
||||
public override List<String> GetAllergies()
|
||||
{
|
||||
List<String> allergies = new List<String>();
|
||||
return allergies;
|
||||
}
|
||||
public override List<String> GetRiskFactors()
|
||||
{
|
||||
List<String> riskfactors = new List<String>();
|
||||
return riskfactors;
|
||||
}
|
||||
public override bool SetProcedureKits(List<String> procedures)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
public override bool SetAllergies(List<String> allergies)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
public override bool SetRiskFactors(List<String> riskFactors)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool ClearAssociatedData()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Core.Interfaces;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Bus
|
||||
{
|
||||
//=======================================================================
|
||||
class SpmDepartment_Dbas : SpmDepartment
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private readonly SpmUserContext userContext;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmDepartment_Dbas(SpmUserContext userContext, SysId id, ushort flags) :
|
||||
base(id)
|
||||
{
|
||||
this.userContext = userContext;
|
||||
Flags = flags;
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Associated data.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Core.Interfaces;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Bus
|
||||
{
|
||||
//=======================================================================
|
||||
class SpmEmployeeRole_Dbas : SpmEmployeeRole
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private readonly SpmUserContext userContext;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmEmployeeRole_Dbas(SpmUserContext userContext, SysId departmentId, SysId employeeId, Spm.EmployeeRole employeeRole, ushort flags) :
|
||||
base(departmentId, employeeId, employeeRole)
|
||||
{
|
||||
this.userContext = userContext;
|
||||
Flags = flags;
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Associated data.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Core.Interfaces;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Bus
|
||||
{
|
||||
//=======================================================================
|
||||
class SpmEmployee_Dbas : SpmEmployee
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private readonly SpmUserContext userContext;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmEmployee_Dbas(SpmUserContext userContext, SysId id, SysId institutionId, ushort flags) :
|
||||
base(id, institutionId)
|
||||
{
|
||||
this.userContext = userContext;
|
||||
Flags = flags;
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Associated data.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Core.Interfaces;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Bus
|
||||
{
|
||||
//=======================================================================
|
||||
class SpmFacilitySession_Dbas : SpmFacilitySession
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private readonly SpmUserContext userContext;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmFacilitySession_Dbas(SpmUserContext userContext, SysId facilityId, SysId facilityTemplateId, DateTime sessionDate, ushort flags) :
|
||||
base(facilityId, facilityTemplateId, sessionDate)
|
||||
{
|
||||
this.userContext = userContext;
|
||||
Flags = flags;
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Associated data.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Core.Interfaces;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Bus
|
||||
{
|
||||
//=======================================================================
|
||||
class SpmFacilityTemplate_Dbas : SpmFacilityTemplate
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private readonly SpmUserContext userContext;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmFacilityTemplate_Dbas(SpmUserContext userContext, SysId facilityId, Spm.ResourceCategory resourceCategory, ushort flags) :
|
||||
base(facilityId, resourceCategory)
|
||||
{
|
||||
this.userContext = userContext;
|
||||
Flags = flags;
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Associated data.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Core.Interfaces;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Bus
|
||||
{
|
||||
//=======================================================================
|
||||
class SpmFacility_Dbas : SpmFacility
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private readonly SpmUserContext userContext;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmFacility_Dbas(SpmUserContext userContext, SysId facilityId, SysId departmentId, Spm.FacilityType facilityType, ushort flags) :
|
||||
base(facilityId, departmentId, facilityType)
|
||||
{
|
||||
this.userContext = userContext;
|
||||
Flags = flags;
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Associated data.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Core.Interfaces;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Bus
|
||||
{
|
||||
//=======================================================================
|
||||
class SpmInstitution_Dbas : SpmInstitution
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private readonly SpmUserContext userContext;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmInstitution_Dbas(SpmUserContext userContext, SysId id, ushort flags) : base(id)
|
||||
{
|
||||
id = Id;
|
||||
this.userContext = userContext;
|
||||
Flags = flags;
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Associated data.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Core.Interfaces;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Bus
|
||||
{
|
||||
//=======================================================================
|
||||
class SpmOperation_Dbas : SpmOperation
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private readonly SpmUserContext userContext;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmOperation_Dbas(SpmUserContext userContext, SysId departmentId, SysId institutionId, ushort flags) :
|
||||
base(departmentId, institutionId)
|
||||
{
|
||||
this.userContext = userContext;
|
||||
Flags = flags;
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Associated data.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Core.Interfaces;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Bus
|
||||
{
|
||||
//=======================================================================
|
||||
class SpmPatient_Dbas : SpmPatient
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private readonly SpmUserContext userContext;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmPatient_Dbas(SpmUserContext userContext, SysId id, SysId institutionId, ushort flags) :
|
||||
base(id, institutionId)
|
||||
{
|
||||
this.userContext = userContext;
|
||||
Flags = flags;
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Associated data.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Core.Interfaces;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Bus
|
||||
{
|
||||
//=======================================================================
|
||||
class SpmProcedure_Dbas : SpmProcedure
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private readonly SpmUserContext userContext;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmProcedure_Dbas(SpmUserContext userContext, SysId id, SysId departmentId, ushort flags) :
|
||||
base(id, departmentId)
|
||||
{
|
||||
this.userContext = userContext;
|
||||
Flags = flags;
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Associated data.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Core.Interfaces;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Bus
|
||||
{
|
||||
//=======================================================================
|
||||
class SpmTemplateData_Dbas : SpmTemplateData
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private readonly SpmUserContext userContext;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmTemplateData_Dbas(SpmUserContext userContext, SysId id, ushort flags) :
|
||||
base(id)
|
||||
{
|
||||
this.userContext = userContext;
|
||||
Flags = flags;
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Associated data.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,715 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Sarand.Core.App;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.Win.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
using Sarand.PatientMgr.Win.Dbas.Bus;
|
||||
using Sarand.PatientMgr.Win.Dbas.Internal;
|
||||
//using Sarand.PatientMgr.Win.Dbas.UpdateLog;
|
||||
using Sarand.Win.Dbas.Data;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
internal partial class SpmAdmissionMgr_Dbas : SpmAdmissionMgr
|
||||
{
|
||||
//*******************************************************************
|
||||
// A d m i s s i o n A c t i o n
|
||||
//*******************************************************************
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// AdmissionAction exists.
|
||||
public override bool AdmissionActionExistsById(SysId admissionActionId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(admissionActionId)) return false;
|
||||
SpmAdmissionAction.Params prmAdmissionAction = new SpmAdmissionAction.Params();
|
||||
prmAdmissionAction.IncludedIds.Add(admissionActionId);
|
||||
prmAdmissionAction.StatusCat = SpmAdmissionAction.StatusCat.Any;
|
||||
return GetAdmissionActionCount(prmAdmissionAction) == 1;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get AdmissionAction.
|
||||
public override SpmAdmissionAction GetAdmissionAction(SpmAdmissionAction.Params prm)
|
||||
{
|
||||
return GetAdmissionAction(GetAdmissionActionQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
private SpmAdmissionAction GetAdmissionAction(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetAdmissionActionCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple AdmissionActiones found");
|
||||
return null;
|
||||
}
|
||||
SpmAdmissionAction admissionAction = null;
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmAdmissionAction_Db dbAdmissionAction = new SwmAdmissionAction_Db(DbInfo);
|
||||
dbAdmissionAction.PopulateFrom(dbCommand, aliasAdmissionAction, filter);
|
||||
admissionAction = CreateAdmissionAction(dbAdmissionAction);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
Logger.Warn(GetType().Name + ".GetAdmissionAction\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return admissionAction;
|
||||
}
|
||||
public override SpmAdmissionAction GetAdmissionActionById(SysId admissionActionId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(admissionActionId)) return null;
|
||||
SpmAdmissionAction.Params prmAdmissionAction = new SpmAdmissionAction.Params();
|
||||
prmAdmissionAction.IncludedIds.Add(admissionActionId);
|
||||
prmAdmissionAction.StatusCat = SpmAdmissionAction.StatusCat.Any;
|
||||
return GetAdmissionAction(prmAdmissionAction);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create AdmissionAction.
|
||||
public override SpmAdmissionAction CreateAdmissionAction(SysId admissionId, Spm.AdmissionActionType admissionActionType)
|
||||
{
|
||||
return new SpmAdmissionAction_Dbas(UserContext, null, admissionId, admissionActionType, 0);
|
||||
}
|
||||
private SpmAdmissionAction_Dbas CreateAdmissionAction(SwmAdmissionAction_Db dbAdmissionAction)
|
||||
{
|
||||
ClearErrorState();
|
||||
SpmAdmissionAction_Dbas admissionAction = new SpmAdmissionAction_Dbas(UserContext, new SysId(dbAdmissionAction._Id), new SysId(dbAdmissionAction._AdmissionId), (Spm.AdmissionActionType)dbAdmissionAction._Type, (ushort)dbAdmissionAction._Flags);
|
||||
PopulateFrom(dbAdmissionAction, admissionAction);
|
||||
return admissionAction;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate AdmissionAction.
|
||||
public override bool IsValidAdmissionActionData(SpmAdmissionAction.Data data, SpmAdmissionAction.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidAdmissionActionData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert AdmissionAction.
|
||||
public override bool InsertAdmissionAction(SpmAdmissionAction admissionAction, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidAdmissionAction(admissionAction)) return false;
|
||||
if (SysId.IsValid(admissionAction.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmAdmissionAction_Db dbAdmissionAction = new SwmAdmissionAction_Db(DbInfo);
|
||||
PopulateTo(dbAdmissionAction, admissionAction, dbUpdateInfo);
|
||||
if (SwmAdmissionAction_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbAdmissionAction._Id = SysId.ToInt(db.GetNextId("AdmissionAction", dbUpdateInfo));
|
||||
}
|
||||
dbAdmissionAction.ExecuteInsertCommand(dbCommand);
|
||||
admissionAction.Id = new SysId(dbAdmissionAction._Id);
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update AdmissionAction.
|
||||
public override bool UpdateAdmissionAction(SpmAdmissionAction admissionAction, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidAdmissionAction(admissionAction)) return false;
|
||||
if (!SysId.IsValid(admissionAction.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve AdmissionAction.
|
||||
dbConnection.Open();
|
||||
SwmAdmissionAction_Db dbAdmissionAction = new SwmAdmissionAction_Db(DbInfo);
|
||||
dbAdmissionAction.PopulateFrom(dbCommand, aliasAdmissionAction, "Id=" + SysId.ToString(admissionAction.Id));
|
||||
//SpmUpdateLogItemMonitor_AdmissionAction updateLogMonitor = new SpmUpdateLogItemMonitor_AdmissionAction(UserContext, CreateAdmissionAction(dbAdmissionAction));
|
||||
|
||||
// Update properties.
|
||||
PopulateTo(dbAdmissionAction, admissionAction, dbUpdateInfo);
|
||||
dbAdmissionAction.ExecuteUpdateCommand(dbCommand);
|
||||
|
||||
/* Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(admissionAction);
|
||||
updateLogMonitor.LogUpdates();*/
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete AdmissionAction.
|
||||
public override bool AdmissionActionCanBeDeleted(SpmAdmissionAction admissionAction)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.AdmissionActionCanBeDeleted(admissionAction)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteAdmissionAction(SpmAdmissionAction admissionAction, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!AdmissionActionCanBeDeleted(admissionAction)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve AdmissionAction.
|
||||
dbConnection.Open();
|
||||
SwmAdmissionAction_Db dbAdmissionAction = new SwmAdmissionAction_Db(DbInfo);
|
||||
dbAdmissionAction.PopulateFrom(dbCommand, aliasAdmissionAction, "Id=" + admissionAction.Id.ToString());
|
||||
// Delete AdmissionAction.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmissionAction) + " WHERE Id=" + SysId.ToString(admissionAction.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(SwmAdmissionAction_Db dbAdmissionAction, SpmAdmissionAction admissionAction, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbAdmissionAction._Id = admissionAction.Id.ToInt();
|
||||
dbAdmissionAction._AdmissionId = admissionAction.AdmissionId.ToInt();
|
||||
dbAdmissionAction._Type = (short)admissionAction.AdmissionActionType;
|
||||
dbAdmissionAction._Raised = admissionAction.Raised;
|
||||
dbAdmissionAction._EmployeeIdRaised = admissionAction.EmployeeIdRaised.ToInt();
|
||||
dbAdmissionAction._Completed = admissionAction.Completed;
|
||||
dbAdmissionAction._EmployeeIdCompleted = admissionAction.EmployeeIdCompleted.ToInt();
|
||||
dbAdmissionAction._ActionData = admissionAction.ActionData;
|
||||
|
||||
dbAdmissionAction._Notes = admissionAction.Notes;
|
||||
dbAdmissionAction._Status = SacsSystem.GetStatusCode(admissionAction.Status);
|
||||
dbAdmissionAction._Flags = (short)admissionAction.Flags;
|
||||
if (!SysId.IsValid(admissionAction.Id))
|
||||
{
|
||||
dbAdmissionAction._CreateOn = DateTime.UtcNow;
|
||||
dbAdmissionAction._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbAdmissionAction._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbAdmissionAction._UpdateOn = DateTime.UtcNow;
|
||||
dbAdmissionAction._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbAdmissionAction._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(SwmAdmissionAction_Db dbAdmissionAction, SpmAdmissionAction admissionAction)
|
||||
{
|
||||
admissionAction.Id = new SysId(dbAdmissionAction._Id);
|
||||
admissionAction.AdmissionId = new SysId(dbAdmissionAction._AdmissionId);
|
||||
admissionAction.AdmissionActionType = (Spm.AdmissionActionType)dbAdmissionAction._Type;
|
||||
admissionAction.Raised = dbAdmissionAction._Raised;
|
||||
admissionAction.EmployeeIdRaised = new SysId(dbAdmissionAction._EmployeeIdRaised);
|
||||
admissionAction.Completed = dbAdmissionAction._Completed;
|
||||
admissionAction.EmployeeIdCompleted = new SysId(dbAdmissionAction._EmployeeIdCompleted);
|
||||
admissionAction.ActionData = dbAdmissionAction._ActionData;
|
||||
|
||||
admissionAction.Notes = dbAdmissionAction._Notes;
|
||||
admissionAction.Status = SacsSystem.GetStatusForCode(dbAdmissionAction._Status);
|
||||
admissionAction.SetCreateStamp(dbAdmissionAction._CreateOn, new SysId(dbAdmissionAction._CreateBy), dbAdmissionAction._CreateHost);
|
||||
admissionAction.SetUpdateStamp(dbAdmissionAction._UpdateOn, new SysId(dbAdmissionAction._UpdateBy), dbAdmissionAction._UpdateHost);
|
||||
admissionAction.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// AdmissionAction column definitions.
|
||||
private static readonly String aliasAdmissionAction = "aAdmAct";
|
||||
private void SetAdmissionActionColDfn
|
||||
(ColumnDfn col, String caption, int width, SpmDbDfn.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SpmDbDfn.GetTableForColumn(dbCol) == SpmDbDfn.TableIdx.SwmAdmissionAction)
|
||||
alias = aliasAdmissionAction;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SpmDbDfn.GetColumnName(dbCol, false), SpmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SpmDbDfn.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SpmDbDfn.GetColTextLen(dbCol);
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
// Getting prmAdmissionAction column definition.
|
||||
public override ColumnDfn GetAdmissionActionColumnDfn(SpmAdmissionAction.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
case SpmAdmissionAction.Column.Pos:
|
||||
SetAdmissionActionColDfn(columnDfn, "Pos", 42, SpmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SpmAdmissionAction.Column.Id:
|
||||
SetAdmissionActionColDfn(columnDfn, "Id", 40, SpmDbDfn.ColumnIdx.SwmAdmissionAction_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
// AdmissionAction Properties.
|
||||
case SpmAdmissionAction.Column.AdmissionId:
|
||||
SetAdmissionActionColDfn(columnDfn, "AdmId", 55, SpmDbDfn.ColumnIdx.SwmAdmissionAction_AdmissionId, ColumnAlignment.Right);
|
||||
break;
|
||||
case SpmAdmissionAction.Column.Type:
|
||||
SetAdmissionActionColDfn(columnDfn, "Type", 40, SpmDbDfn.ColumnIdx.SwmAdmissionAction_Type, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmAdmissionAction.Column.Type_Desc:
|
||||
SetAdmissionActionColDfn(columnDfn, "Type", 100, SpmDbDfn.ColumnIdx.SwmAdmissionAction_Type);
|
||||
break;
|
||||
|
||||
|
||||
case SpmAdmissionAction.Column.Notes:
|
||||
SetAdmissionActionColDfn(columnDfn, "Notes", 200, SpmDbDfn.ColumnIdx.SwmAdmissionAction_Notes);
|
||||
break;
|
||||
case SpmAdmissionAction.Column.Flags:
|
||||
SetAdmissionActionColDfn(columnDfn, "Flags", 40, SpmDbDfn.ColumnIdx.SwmAdmissionAction_Flags);
|
||||
break;
|
||||
case SpmAdmissionAction.Column.Status:
|
||||
SetAdmissionActionColDfn(columnDfn, "Status", 40, SpmDbDfn.ColumnIdx.SwmAdmissionAction_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmAdmissionAction.Column.Status_Desc:
|
||||
SetAdmissionActionColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmAdmissionAction_Status);
|
||||
break;
|
||||
case SpmAdmissionAction.Column.Status_Ind:
|
||||
SetAdmissionActionColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmAdmissionAction_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
break;
|
||||
|
||||
// Admission details.
|
||||
case SpmAdmissionAction.Column.Admission_FacilityId:
|
||||
SetAdmissionActionColDfn(columnDfn, "FacId", 45, SpmDbDfn.ColumnIdx.SwmAdmission_FacilityId, ColumnAlignment.Right, DataValue.DataType.String, aliasAdmission, prefixAdmission);
|
||||
break;
|
||||
case SpmAdmissionAction.Column.Admission_TemplateId:
|
||||
SetAdmissionActionColDfn(columnDfn, "FacId", 45, SpmDbDfn.ColumnIdx.SwmAdmission_FacilityTemplateId, ColumnAlignment.Right, DataValue.DataType.String, aliasAdmission, prefixAdmission);
|
||||
break;
|
||||
case SpmAdmissionAction.Column.AdmissionFrom:
|
||||
SetAdmissionActionColDfn(columnDfn, "From", 100, SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionFrom, ColumnAlignment.Center, DataValue.DataType.DateTime, aliasAdmission, prefixAdmission);
|
||||
columnDfn.DateFormat = "d-MMM-yy";
|
||||
columnDfn.TimeFormat = "HH:mm";
|
||||
break;
|
||||
case SpmAdmissionAction.Column.AdmissionFromDateTime:
|
||||
SetAdmissionActionColDfn(columnDfn, "From", 120, SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionFrom, ColumnAlignment.Center, DataValue.DataType.DateTime, aliasAdmission, prefixAdmission);
|
||||
columnDfn.DateFormat = "d-MMM-yy";
|
||||
columnDfn.TimeFormat = "HH:mm";
|
||||
break;
|
||||
case SpmAdmissionAction.Column.AdmissionFromDate:
|
||||
SetAdmissionActionColDfn(columnDfn, "From", 80, SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionFrom, ColumnAlignment.Center, DataValue.DataType.Date, aliasAdmission, prefixAdmission);
|
||||
columnDfn.DateFormat = "d-MMM-yy";
|
||||
break;
|
||||
case SpmAdmissionAction.Column.AdmissionFromTime:
|
||||
SetAdmissionActionColDfn(columnDfn, "From", 40, SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionFrom, ColumnAlignment.Center, DataValue.DataType.Time, aliasAdmission, prefixAdmission);
|
||||
columnDfn.TimeFormat = "HH:mm";
|
||||
break;
|
||||
case SpmAdmissionAction.Column.AdmissionTo:
|
||||
SetAdmissionActionColDfn(columnDfn, "To", 100, SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionTo, ColumnAlignment.Center, DataValue.DataType.DateTime, aliasAdmission, prefixAdmission);
|
||||
columnDfn.DateFormat = "d-MMM-yy";
|
||||
columnDfn.TimeFormat = "HH:mm";
|
||||
break;
|
||||
case SpmAdmissionAction.Column.AdmissionToDate:
|
||||
SetAdmissionActionColDfn(columnDfn, "To", 80, SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionTo, ColumnAlignment.Center, DataValue.DataType.Date, aliasAdmission, prefixAdmission);
|
||||
columnDfn.DateFormat = "d-MMM-yy";
|
||||
break;
|
||||
case SpmAdmissionAction.Column.AdmissionToTime:
|
||||
SetAdmissionActionColDfn(columnDfn, "To", 40, SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionTo, ColumnAlignment.Center, DataValue.DataType.Time, aliasAdmission, prefixAdmission);
|
||||
columnDfn.TimeFormat = "HH:mm";
|
||||
break;
|
||||
case SpmAdmissionAction.Column.AdmissionType:
|
||||
SetAdmissionActionColDfn(columnDfn, "AdmType", 40, SpmDbDfn.ColumnIdx.SwmAdmissionAction_Type, ColumnAlignment.Center, DataValue.DataType.String, aliasAdmission, prefixAdmission);
|
||||
break;
|
||||
case SpmAdmissionAction.Column.AdmissionTypeDesc:
|
||||
SetAdmissionActionColDfn(columnDfn, "AdmType", 90, SpmDbDfn.ColumnIdx.SwmAdmissionAction_Type, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission, prefixAdmission);
|
||||
break;
|
||||
case SpmAdmissionAction.Column.AdmissionNotes:
|
||||
SetAdmissionActionColDfn(columnDfn, "AdmNotes", 200, SpmDbDfn.ColumnIdx.SwmAdmissionAction_Notes, ColumnAlignment.Center, DataValue.DataType.String, aliasAdmission, prefixAdmission);
|
||||
break;
|
||||
case SpmAdmissionAction.Column.AdmissionFlags:
|
||||
SetAdmissionActionColDfn(columnDfn, "AdmFlags", 40, SpmDbDfn.ColumnIdx.SwmAdmissionAction_Flags, ColumnAlignment.Center, DataValue.DataType.String, aliasAdmission, prefixAdmission);
|
||||
break;
|
||||
case SpmAdmissionAction.Column.AdmissionStatus:
|
||||
SetAdmissionActionColDfn(columnDfn, "AdmStatus", 40, SpmDbDfn.ColumnIdx.SwmAdmissionAction_Status, ColumnAlignment.Center, DataValue.DataType.String, aliasAdmission, prefixAdmission);
|
||||
break;
|
||||
case SpmAdmissionAction.Column.AdmissionStatusInd:
|
||||
SetAdmissionActionColDfn(columnDfn, "AdmStatus", 50, SpmDbDfn.ColumnIdx.SwmAdmissionAction_Status, ColumnAlignment.Center, DataValue.DataType.TriState, aliasAdmission, prefixAdmission);
|
||||
break;
|
||||
|
||||
// Patient.
|
||||
case SpmAdmissionAction.Column.Patient:
|
||||
SetAdmissionActionColDfn(columnDfn, "Patient", 200, SpmDbDfn.ColumnIdx.SwmAdmission_PatientNo, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission, prefixAdmission);
|
||||
break;
|
||||
case SpmAdmissionAction.Column.PatientId:
|
||||
SetAdmissionActionColDfn(columnDfn, "Patient Id", 80, SpmDbDfn.ColumnIdx.SwmAdmission_PatientId, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission, prefixAdmission);
|
||||
break;
|
||||
case SpmAdmissionAction.Column.PatientNo:
|
||||
SetAdmissionActionColDfn(columnDfn, "Patient No", 80, SpmDbDfn.ColumnIdx.SwmAdmission_PatientNo, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission, prefixAdmission);
|
||||
break;
|
||||
case SpmAdmissionAction.Column.PatientSurname:
|
||||
SetAdmissionActionColDfn(columnDfn, "Surname", 90, SpmDbDfn.ColumnIdx.SwmAdmission_Surname, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission, prefixAdmission);
|
||||
break;
|
||||
case SpmAdmissionAction.Column.PatientForename:
|
||||
SetAdmissionActionColDfn(columnDfn, "Forename", 90, SpmDbDfn.ColumnIdx.SwmAdmission_Forename, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission, prefixAdmission);
|
||||
break;
|
||||
|
||||
// Facility.
|
||||
case SpmAdmissionAction.Column.Facility_Name:
|
||||
SetAdmissionActionColDfn(columnDfn, "Facility Name", 100, SpmDbDfn.ColumnIdx.SwmFacility_Name, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Facility, prefixAdmission_Facility);
|
||||
break;
|
||||
case SpmAdmissionAction.Column.Facility_Desc:
|
||||
SetAdmissionActionColDfn(columnDfn, "Facility Desc", 120, SpmDbDfn.ColumnIdx.SwmFacility_Description, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Facility, prefixAdmission_Facility);
|
||||
break;
|
||||
case SpmAdmissionAction.Column.Facility_Notes:
|
||||
SetAdmissionActionColDfn(columnDfn, "Facility Notes", 200, SpmDbDfn.ColumnIdx.SwmFacility_Notes, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Facility, prefixAdmission_Facility);
|
||||
break;
|
||||
|
||||
// Facility Template.
|
||||
case SpmAdmissionAction.Column.Template_Name:
|
||||
SetAdmissionActionColDfn(columnDfn, "Template Name", 100, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Name, ColumnAlignment.Center, DataValue.DataType.String, aliasAdmission_Template, prefixAdmission_Template);
|
||||
break;
|
||||
case SpmAdmissionAction.Column.Template_Desc:
|
||||
SetAdmissionActionColDfn(columnDfn, "Template Desc", 160, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Description, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Template, prefixAdmission_Template);
|
||||
break;
|
||||
case SpmAdmissionAction.Column.Template_Notes:
|
||||
SetAdmissionActionColDfn(columnDfn, "Tmpl Notes", 200, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Notes, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Template, prefixAdmission_Template);
|
||||
break;
|
||||
|
||||
// Session definition (combined template and date-specific session info).
|
||||
case SpmAdmissionAction.Column.SessionDfn_Summary:
|
||||
SetAdmissionActionColDfn(columnDfn, "Session", 160, SpmDbDfn.ColumnIdx.Unknown);
|
||||
break;
|
||||
|
||||
// Common properties.
|
||||
case SpmAdmissionAction.Column.CreateOn_Date:
|
||||
SetAdmissionActionColDfn(columnDfn, "Created", 65, SpmDbDfn.ColumnIdx.SwmAdmissionAction_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SpmAdmissionAction.Column.UpdateOn_Date:
|
||||
SetAdmissionActionColDfn(columnDfn, "Updated", 65, SpmDbDfn.ColumnIdx.SwmAdmissionAction_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
}
|
||||
if (!String.IsNullOrEmpty(caption))
|
||||
columnDfn.Caption = caption;
|
||||
if (width > 0)
|
||||
columnDfn.Width = width;
|
||||
return columnDfn;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// AdmissionAction query filter.
|
||||
public override List<string> GetAdmissionActionQueryFilter(SpmAdmissionAction.Params prm)
|
||||
{
|
||||
List<String> filters = new List<String>();
|
||||
|
||||
// AdmissionAction Id.
|
||||
String includedIds = prm.IncludedIds.Concat(",");
|
||||
if (!includedIds.IsEmpty())
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionAction_Id, aliasAdmissionAction) + " IN (" + includedIds + ")");
|
||||
String excludedIds = prm.ExcludedIds.Concat(",");
|
||||
if (!excludedIds.IsEmpty())
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionAction_Id, aliasAdmissionAction) + " NOT IN (" + excludedIds + ")");
|
||||
|
||||
// Department Id - join via Facility table.
|
||||
List<String> filtersDepartIdFacilityId = new List<String>();
|
||||
if (SysId.IsValid(prm.DepartmentId))
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_DepartmentId, aliasAdmission_Facility) + "=" + prm.DepartmentId.ToString());
|
||||
else
|
||||
{
|
||||
DbQuery qry = new DbQuery(db.DbmsType);
|
||||
qry.Tables.Add(new StringPair(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmFacility), aliasAdmission_Facility));
|
||||
qry.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_Id));
|
||||
qry.Filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_DepartmentId) + "=" + prm.DepartmentId.ToString());
|
||||
filtersDepartIdFacilityId.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_FacilityId, aliasAdmission) + " IN (" + qry.BuildQuery() + ")");
|
||||
}
|
||||
|
||||
// Facility Id.
|
||||
if (SysId.IsValid(prm.FacilityId))
|
||||
filtersDepartIdFacilityId.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_FacilityId, aliasAdmission) + "=" + prm.FacilityId.ToString());
|
||||
else
|
||||
{
|
||||
DbQuery qry = new DbQuery(db.DbmsType);
|
||||
qry.Tables.Add(new StringPair(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmission), aliasAdmission));
|
||||
qry.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_Id, aliasAdmission));
|
||||
qry.Filters.AddRange(filtersDepartIdFacilityId);
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionAction_AdmissionId, aliasAdmissionAction) + " IN (" + qry.BuildQuery() + ")");
|
||||
}
|
||||
|
||||
// Action type.
|
||||
if (prm.AdmissionActionType > 0)
|
||||
{
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionAction_Type, aliasAdmissionAction) + "=" + ((int)prm.AdmissionActionType).ToString());
|
||||
}
|
||||
|
||||
// Action status.
|
||||
if (prm.RequiredOnly)
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionAction_Status, aliasAdmissionAction) + "='" + SacsSystem.GetStatusCode(SaStatus.Required) + "'");
|
||||
else if (prm.ExcludeCancelled)
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionAction_Status, aliasAdmissionAction) + "!='" + SacsSystem.GetStatusCode(SaStatus.Cancelled) + "'");
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Common Properties.
|
||||
|
||||
if (filters.Count < 1) filters.Add("1=1");
|
||||
return filters;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// AdmissionAction sort columns.
|
||||
public List<String> GetAdmissionActionSortColumns(SpmAdmissionAction.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for AdmissionAction columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SpmDbDfn.GetTableForColumn((SpmDbDfn.ColumnIdx)columnDfn.DbColumn) == SpmDbDfn.TableIdx.SwmAdmissionAction)
|
||||
{
|
||||
sortCol = SpmDbDfn.GetColumnNameQual((SpmDbDfn.ColumnIdx)columnDfn.DbColumn, aliasAdmissionAction);
|
||||
}
|
||||
else
|
||||
{
|
||||
sortCol = columnDfn.DataName;
|
||||
if (!StringUtil.IsEmpty(columnDfn.SortDataName))
|
||||
sortCol = columnDfn.SortDataName;
|
||||
}
|
||||
if (!sortCol.IsEmpty())
|
||||
{
|
||||
DbOrderByNullMode orderByNullMode = DbOrderByNullMode.Default; // eSaOrderByDemoteNulls, eSaOrderByPromoteNulls
|
||||
sortColumnNames.Add(DbQuery.FormatForOrderBy(sortCol, columnDfn.SortAscending, orderByNullMode).Concat(", "));
|
||||
}
|
||||
}
|
||||
sortColumnNames.RemoveBlanks();
|
||||
if (sortColumnNames.IsEmpty())
|
||||
{
|
||||
// Default sort columns:
|
||||
//sortColumnNames.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionAction_Type, aliasAdmissionAction) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// AdmissionAction count.
|
||||
private long GetAdmissionActionCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return db.GetRowCount(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmissionAction) + " As " + aliasAdmissionAction, filter);
|
||||
}
|
||||
public override long GetAdmissionActionCount(SpmAdmissionAction.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetAdmissionActionCount(GetAdmissionActionQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// AdmissionAction list.
|
||||
public override List<SpmAdmissionAction> GetAdmissionActionList(SpmAdmissionAction.Params prm)
|
||||
{
|
||||
List<SpmAdmissionAction> AdmissionActiones = new List<SpmAdmissionAction>();
|
||||
DbQuery qry = new DbQuery(db.DbmsType);
|
||||
qry.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmissionAction), aliasAdmissionAction);
|
||||
qry.Columns.AddRange(SwmAdmissionAction_Db.Fields);
|
||||
qry.Filters.AddRange(GetAdmissionActionQueryFilter(prm));
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
dbCommand.CommandText = qry.BuildQuery();
|
||||
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
|
||||
{
|
||||
while (dbDataReader.Read())
|
||||
{
|
||||
SwmAdmissionAction_Db dbAdmissionAction = new SwmAdmissionAction_Db(DbInfo);
|
||||
dbAdmissionAction.PopulateFrom(dbDataReader);
|
||||
AdmissionActiones.Add(CreateAdmissionAction(dbAdmissionAction));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Logger.Warn(GetType().Name + ".GetAdmissionActionList\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return AdmissionActiones;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// AdmissionAction query execution.
|
||||
public override DbResultSet ExecuteAdmissionActionQuery(List<ColumnDfn> columns, SpmAdmissionAction.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(db.DbmsType);
|
||||
query.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmissionAction), aliasAdmissionAction);
|
||||
|
||||
// AdmissionAction Properties - add columns as defined in query list.
|
||||
if (columns.HasId((int)SpmAdmissionAction.Column.Id))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionAction_Id, aliasAdmissionAction));
|
||||
if (columns.HasId((int)SpmAdmissionAction.Column.AdmissionId))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionAction_AdmissionId, aliasAdmissionAction));
|
||||
if (columns.HasId((int)SpmAdmissionAction.Column.Type) || columns.HasId((int)SpmAdmissionAction.Column.Type_Desc))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionAction_Type, aliasAdmissionAction));
|
||||
|
||||
// Join to Admission table.
|
||||
DbQueryJoin joinAdm = new DbQueryJoin(DbJoinType.Inner);
|
||||
joinAdm.Table = new StringPair(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmission), aliasAdmission);
|
||||
joinAdm.Filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_Id, aliasAdmission) + "=" + SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionAction_AdmissionId));
|
||||
query.Joins.Add(joinAdm);
|
||||
|
||||
// Add the Admission columns.
|
||||
List<SpmDbDfn.ColumnIdx> admissionCols = new List<SpmDbDfn.ColumnIdx>();
|
||||
admissionCols.Add(SpmDbDfn.ColumnIdx.SwmAdmission_Id);
|
||||
admissionCols.Add(SpmDbDfn.ColumnIdx.SwmAdmission_FacilityId);
|
||||
admissionCols.Add(SpmDbDfn.ColumnIdx.SwmAdmission_FacilityTemplateId);
|
||||
admissionCols.Add(SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionFrom);
|
||||
admissionCols.Add(SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionTo);
|
||||
admissionCols.Add(SpmDbDfn.ColumnIdx.SwmAdmission_Seq);
|
||||
admissionCols.Add(SpmDbDfn.ColumnIdx.SwmAdmission_Type);
|
||||
admissionCols.Add(SpmDbDfn.ColumnIdx.SwmAdmission_PatientId);
|
||||
admissionCols.Add(SpmDbDfn.ColumnIdx.SwmAdmission_PatientNo);
|
||||
admissionCols.Add(SpmDbDfn.ColumnIdx.SwmAdmission_Surname);
|
||||
admissionCols.Add(SpmDbDfn.ColumnIdx.SwmAdmission_Forename);
|
||||
admissionCols.Add(SpmDbDfn.ColumnIdx.SwmAdmission_Notes);
|
||||
admissionCols.Add(SpmDbDfn.ColumnIdx.SwmAdmission_Flags);
|
||||
admissionCols.Add(SpmDbDfn.ColumnIdx.SwmAdmission_Status);
|
||||
foreach (SpmDbDfn.ColumnIdx dbColumn in admissionCols)
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(dbColumn, aliasAdmission), prefixAdmission + SpmDbDfn.GetColumnName(dbColumn, false));
|
||||
|
||||
// Facility.
|
||||
bool hasFacilityCols = false;
|
||||
if (!hasFacilityCols) hasFacilityCols = columns.HasId((int)SpmAdmissionAction.Column.Facility_Name);
|
||||
if (!hasFacilityCols) hasFacilityCols = columns.HasId((int)SpmAdmissionAction.Column.Facility_Desc);
|
||||
if (!hasFacilityCols) hasFacilityCols = columns.HasId((int)SpmAdmissionAction.Column.Facility_Notes);
|
||||
if (hasFacilityCols)
|
||||
{
|
||||
// Join to the Facility.
|
||||
DbQueryJoin joinFacility = new DbQueryJoin(DbJoinType.LeftOuter);;
|
||||
joinFacility.Table = new StringPair(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmFacility), aliasAdmission_Facility);
|
||||
joinFacility.Filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_Id, aliasAdmission_Facility) + "=" + SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_FacilityId, aliasAdmission));
|
||||
query.Joins.Add(joinFacility);
|
||||
|
||||
// Add the Facility columns.
|
||||
List<SpmDbDfn.ColumnIdx> facilityCols = new List<SpmDbDfn.ColumnIdx>();
|
||||
facilityCols.Add(SpmDbDfn.ColumnIdx.SwmFacility_Type);
|
||||
facilityCols.Add(SpmDbDfn.ColumnIdx.SwmFacility_Name);
|
||||
facilityCols.Add(SpmDbDfn.ColumnIdx.SwmFacility_Description);
|
||||
facilityCols.Add(SpmDbDfn.ColumnIdx.SwmFacility_Notes);
|
||||
foreach (SpmDbDfn.ColumnIdx dbColumn in facilityCols)
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(dbColumn, aliasAdmission_Facility), prefixAdmission_Facility + SpmDbDfn.GetColumnName(dbColumn, false));
|
||||
}
|
||||
|
||||
// Template.
|
||||
bool hasTemplateCols = false;
|
||||
if (!hasTemplateCols) hasTemplateCols = columns.HasId((int)SpmAdmissionAction.Column.Template_Name);
|
||||
if (!hasTemplateCols) hasTemplateCols = columns.HasId((int)SpmAdmissionAction.Column.Template_Desc);
|
||||
if (!hasTemplateCols) hasTemplateCols = columns.HasId((int)SpmAdmissionAction.Column.Template_Notes);
|
||||
if (!hasTemplateCols) hasTemplateCols = columns.HasId((int)SpmAdmissionAction.Column.SessionDfn_Summary);
|
||||
if (hasTemplateCols)
|
||||
{
|
||||
// Join to the Template table.
|
||||
DbQueryJoin joinTmpl = new DbQueryJoin(DbJoinType.LeftOuter);;
|
||||
joinTmpl.Table = new StringPair(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmFacilityTemplate), aliasAdmission_Template);
|
||||
joinTmpl.Filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Id, aliasAdmission_Template) + "=" + SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_FacilityTemplateId, aliasAdmission));
|
||||
query.Joins.Add(joinTmpl);
|
||||
|
||||
// Add the template columns.
|
||||
List<SpmDbDfn.ColumnIdx> templateCols = new List<SpmDbDfn.ColumnIdx>();
|
||||
templateCols.Add(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Name);
|
||||
templateCols.Add(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Description);
|
||||
templateCols.Add(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Notes);
|
||||
foreach (SpmDbDfn.ColumnIdx dbColumn in templateCols)
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(dbColumn, aliasAdmission_Template), prefixAdmission_Template + SpmDbDfn.GetColumnName(dbColumn, false));
|
||||
}
|
||||
|
||||
// Common Properties
|
||||
if (columns.HasId((int)SpmAdmissionAction.Column.Notes))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionAction_Notes, aliasAdmissionAction));
|
||||
if (columns.HasId((int)SpmAdmissionAction.Column.Status) || columns.HasId((int)SpmAdmissionAction.Column.Status_Desc) || columns.HasId((int)SpmAdmissionAction.Column.Status_Ind))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionAction_Status, aliasAdmissionAction));
|
||||
if (columns.HasId((int)SpmAdmissionAction.Column.CreateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionAction_CreateOn, aliasAdmissionAction));
|
||||
if (columns.HasId((int)SpmAdmissionAction.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionAction_UpdateOn, aliasAdmissionAction));
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetAdmissionActionQueryFilter(prm));
|
||||
|
||||
if (prm.IncludedIds.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetAdmissionActionSortColumns(prm))
|
||||
query.OrderBy.Add(sortColumn);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
//return new DbResultSet_DataTableReader(db, query.BuildQuery());
|
||||
return new Sarand.Win.Dbas.Data.DbResultSet_DataReader(db, query.BuildQuery());
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
public override DataValue GetAdmissionActionDataValue(ColumnDfn column, NamedValue.Map values)
|
||||
{
|
||||
DataValue value = new DataValue();
|
||||
switch ((SpmAdmissionAction.Column)column.Id)
|
||||
{
|
||||
// Notes.
|
||||
case SpmAdmissionAction.Column.Notes:
|
||||
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
|
||||
break;
|
||||
|
||||
// Status.
|
||||
case SpmAdmissionAction.Column.Status_Desc:
|
||||
case SpmAdmissionAction.Column.Status_Ind:
|
||||
{
|
||||
String statusCode = values.GetValue(column.DataName).ToString();
|
||||
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
|
||||
if (column.Id == (int)SpmAdmissionAction.Column.Status_Desc)
|
||||
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
|
||||
else if (column.Id == (int)SpmAdmissionAction.Column.Status_Ind)
|
||||
value = new DataValue(SpmAdmissionAction.GetStatusTriState(status));
|
||||
}
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
}
|
||||
return value;
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,509 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Sarand.Core.App;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.Win.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
using Sarand.PatientMgr.Win.Dbas.Bus;
|
||||
using Sarand.PatientMgr.Win.Dbas.Internal;
|
||||
//using Sarand.PatientMgr.Win.Dbas.UpdateLog;
|
||||
using Sarand.Win.Dbas.Data;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
internal partial class SpmAdmissionMgr_Dbas : SpmAdmissionMgr
|
||||
{
|
||||
//*******************************************************************
|
||||
// A d m i s s i o n D a t a
|
||||
//*******************************************************************
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// AdmissionData exists.
|
||||
public override bool AdmissionDataExistsById(SysId admissionDataId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(admissionDataId)) return false;
|
||||
SpmAdmissionData.Params prmAdmissionData = new SpmAdmissionData.Params();
|
||||
prmAdmissionData.IncludedIds.Add(admissionDataId);
|
||||
prmAdmissionData.StatusCat = SpmAdmissionData.StatusCat.Any;
|
||||
return GetAdmissionDataCount(prmAdmissionData) == 1;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get AdmissionData.
|
||||
public override SpmAdmissionData GetAdmissionData(SpmAdmissionData.Params prm)
|
||||
{
|
||||
return GetAdmissionData(GetAdmissionDataQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
private SpmAdmissionData GetAdmissionData(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetAdmissionDataCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple AdmissionDataes found");
|
||||
return null;
|
||||
}
|
||||
SpmAdmissionData admissionData = null;
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmAdmissionData_Db dbAdmissionData = new SwmAdmissionData_Db(DbInfo);
|
||||
dbAdmissionData.PopulateFrom(dbCommand, aliasAdmissionData, filter);
|
||||
admissionData = CreateAdmissionData(dbAdmissionData);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
Logger.Warn(GetType().Name + ".GetAdmissionData\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return admissionData;
|
||||
}
|
||||
public override SpmAdmissionData GetAdmissionDataById(SysId admissionDataId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(admissionDataId)) return null;
|
||||
SpmAdmissionData.Params prmAdmissionData = new SpmAdmissionData.Params();
|
||||
prmAdmissionData.IncludedIds.Add(admissionDataId);
|
||||
prmAdmissionData.StatusCat = SpmAdmissionData.StatusCat.Any;
|
||||
return GetAdmissionData(prmAdmissionData);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create AdmissionData.
|
||||
public override SpmAdmissionData CreateAdmissionData(SysId admissionId, Spm.AdmissionDataType admissionDataType)
|
||||
{
|
||||
return new SpmAdmissionData_Dbas(UserContext, admissionId, admissionDataType, 0);
|
||||
}
|
||||
private SpmAdmissionData_Dbas CreateAdmissionData(SwmAdmissionData_Db dbAdmissionData)
|
||||
{
|
||||
ClearErrorState();
|
||||
SpmAdmissionData_Dbas admissionData = new SpmAdmissionData_Dbas(UserContext, new SysId(dbAdmissionData._AdmissionId), (Spm.AdmissionDataType)dbAdmissionData._Type, (ushort)dbAdmissionData._Flags);
|
||||
PopulateFrom(dbAdmissionData, admissionData);
|
||||
return admissionData;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate AdmissionData.
|
||||
public override bool IsValidAdmissionDataData(SpmAdmissionData.Data data, SpmAdmissionData.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidAdmissionDataData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert AdmissionData.
|
||||
public override bool InsertAdmissionData(SpmAdmissionData admissionData, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidAdmissionData(admissionData)) return false;
|
||||
if (SysId.IsValid(admissionData.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmAdmissionData_Db dbAdmissionData = new SwmAdmissionData_Db(DbInfo);
|
||||
PopulateTo(dbAdmissionData, admissionData, dbUpdateInfo);
|
||||
if (SwmAdmissionData_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
//dbAdmissionData._Id = SysId.ToInt(db.GetNextId("AdmissionData", dbUpdateInfo));
|
||||
}
|
||||
dbAdmissionData.ExecuteInsertCommand(dbCommand);
|
||||
//admissionData.Id = new SysId(dbAdmissionData._Id);
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update AdmissionData.
|
||||
public override bool UpdateAdmissionData(SpmAdmissionData admissionData, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidAdmissionData(admissionData)) return false;
|
||||
if (!SysId.IsValid(admissionData.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve AdmissionData.
|
||||
dbConnection.Open();
|
||||
SwmAdmissionData_Db dbAdmissionData = new SwmAdmissionData_Db(DbInfo);
|
||||
dbAdmissionData.PopulateFrom(dbCommand, aliasAdmissionData, "Id=" + SysId.ToString(admissionData.Id));
|
||||
//SpmUpdateLogItemMonitor_AdmissionData updateLogMonitor = new SpmUpdateLogItemMonitor_AdmissionData(UserContext, CreateAdmissionData(dbAdmissionData));
|
||||
|
||||
// Update properties.
|
||||
PopulateTo(dbAdmissionData, admissionData, dbUpdateInfo);
|
||||
dbAdmissionData.ExecuteUpdateCommand(dbCommand);
|
||||
|
||||
/* Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(admissionData);
|
||||
updateLogMonitor.LogUpdates();*/
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete AdmissionData.
|
||||
public override bool AdmissionDataCanBeDeleted(SpmAdmissionData admissionData)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.AdmissionDataCanBeDeleted(admissionData)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteAdmissionData(SpmAdmissionData admissionData, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!AdmissionDataCanBeDeleted(admissionData)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve AdmissionData.
|
||||
dbConnection.Open();
|
||||
SwmAdmissionData_Db dbAdmissionData = new SwmAdmissionData_Db(DbInfo);
|
||||
dbAdmissionData.PopulateFrom(dbCommand, aliasAdmissionData, "Id=" + admissionData.Id.ToString());
|
||||
// Delete AdmissionData.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmissionData) + " WHERE Id=" + SysId.ToString(admissionData.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(SwmAdmissionData_Db dbAdmissionData, SpmAdmissionData admissionData, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbAdmissionData._AdmissionId = admissionData.AdmissionId.ToInt();
|
||||
dbAdmissionData._Type = (short)admissionData.AdmissionDataType;
|
||||
dbAdmissionData._Data = admissionData.AdmissionData;
|
||||
|
||||
dbAdmissionData._Notes = admissionData.Notes;
|
||||
dbAdmissionData._Status = SacsSystem.GetStatusCode(admissionData.Status);
|
||||
dbAdmissionData._Flags = (short)admissionData.Flags;
|
||||
if (!SysId.IsValid(admissionData.Id))
|
||||
{
|
||||
dbAdmissionData._CreateOn = DateTime.UtcNow;
|
||||
dbAdmissionData._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbAdmissionData._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbAdmissionData._UpdateOn = DateTime.UtcNow;
|
||||
dbAdmissionData._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbAdmissionData._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(SwmAdmissionData_Db dbAdmissionData, SpmAdmissionData admissionData)
|
||||
{
|
||||
admissionData.AdmissionId = new SysId(dbAdmissionData._AdmissionId);
|
||||
admissionData.AdmissionDataType = (Spm.AdmissionDataType)dbAdmissionData._Type;
|
||||
admissionData.AdmissionData = dbAdmissionData._Data;
|
||||
|
||||
admissionData.Notes = dbAdmissionData._Notes;
|
||||
admissionData.Status = SacsSystem.GetStatusForCode(dbAdmissionData._Status);
|
||||
admissionData.SetCreateStamp(dbAdmissionData._CreateOn, new SysId(dbAdmissionData._CreateBy), dbAdmissionData._CreateHost);
|
||||
admissionData.SetUpdateStamp(dbAdmissionData._UpdateOn, new SysId(dbAdmissionData._UpdateBy), dbAdmissionData._UpdateHost);
|
||||
admissionData.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// AdmissionData column definitions.
|
||||
private static readonly String aliasAdmissionData = "aAdmData";
|
||||
private void SetAdmissionDataColDfn
|
||||
(ColumnDfn col, String caption, int width, SpmDbDfn.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SpmDbDfn.GetTableForColumn(dbCol) == SpmDbDfn.TableIdx.SwmAdmissionData)
|
||||
alias = aliasAdmissionData;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SpmDbDfn.GetColumnName(dbCol, false), SpmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SpmDbDfn.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SpmDbDfn.GetColTextLen(dbCol);
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
// Getting prmAdmissionData column definition.
|
||||
public override ColumnDfn GetAdmissionDataColumnDfn(SpmAdmissionData.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
case SpmAdmissionData.Column.Pos:
|
||||
SetAdmissionDataColDfn(columnDfn, "Pos", 42, SpmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
|
||||
// AdmissionData Properties.
|
||||
case SpmAdmissionData.Column.AdmissionId:
|
||||
SetAdmissionDataColDfn(columnDfn, "Id", 40, SpmDbDfn.ColumnIdx.SwmAdmissionData_AdmissionId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SpmAdmissionData.Column.Type:
|
||||
SetAdmissionDataColDfn(columnDfn, "Type", 40, SpmDbDfn.ColumnIdx.SwmAdmissionData_Type, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmAdmissionData.Column.Type_Desc:
|
||||
SetAdmissionDataColDfn(columnDfn, "Type", 100, SpmDbDfn.ColumnIdx.SwmAdmissionData_Type);
|
||||
break;
|
||||
case SpmAdmissionData.Column.AdmissionData:
|
||||
SetAdmissionDataColDfn(columnDfn, "Admission Data", 90, SpmDbDfn.ColumnIdx.SwmAdmissionData_Data);
|
||||
break;
|
||||
|
||||
// Common properties.
|
||||
case SpmAdmissionData.Column.Notes:
|
||||
SetAdmissionDataColDfn(columnDfn, "Notes", 200, SpmDbDfn.ColumnIdx.SwmAdmissionData_Notes);
|
||||
break;
|
||||
case SpmAdmissionData.Column.Status:
|
||||
SetAdmissionDataColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmAdmissionData_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmAdmissionData.Column.Status_Desc:
|
||||
SetAdmissionDataColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmAdmissionData_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmAdmissionData.Column.Status_Ind:
|
||||
SetAdmissionDataColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmAdmissionData_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SpmAdmissionData.Column.CreateOn_Date:
|
||||
SetAdmissionDataColDfn(columnDfn, "Created", 65, SpmDbDfn.ColumnIdx.SwmAdmissionData_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SpmAdmissionData.Column.UpdateOn_Date:
|
||||
SetAdmissionDataColDfn(columnDfn, "Updated", 65, SpmDbDfn.ColumnIdx.SwmAdmissionData_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
}
|
||||
if (!String.IsNullOrEmpty(caption))
|
||||
columnDfn.Caption = caption;
|
||||
if (width > 0)
|
||||
columnDfn.Width = width;
|
||||
return columnDfn;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// AdmissionData query filter.
|
||||
public override List<string> GetAdmissionDataQueryFilter(SpmAdmissionData.Params prm)
|
||||
{
|
||||
List<String> filters = new List<String>();
|
||||
|
||||
// AdmissionData Id.
|
||||
String includedIds = prm.IncludedIds.Concat(",");
|
||||
if (!includedIds.IsEmpty())
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionData_AdmissionId, aliasAdmissionData) + " IN (" + includedIds + ")");
|
||||
String excludedIds = prm.ExcludedIds.Concat(",");
|
||||
if (!excludedIds.IsEmpty())
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionData_AdmissionId, aliasAdmissionData) + " NOT IN (" + excludedIds + ")");
|
||||
|
||||
// Admission Id.
|
||||
String colAdmisssionData_AdmissionId = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionData_AdmissionId, aliasAdmissionData);
|
||||
if (SysId.IsValid(prm.AdmissionId))
|
||||
filters.Add(colAdmisssionData_AdmissionId + "=" + prm.AdmissionId.ToString());
|
||||
|
||||
String colType = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionData_Type, aliasAdmissionData);
|
||||
if (prm.AdmissionDataType > 0)
|
||||
filters.Add(colType + "=" + ((int)prm.AdmissionDataType).ToString());
|
||||
|
||||
|
||||
// AdmissionData.
|
||||
String colAdmissionData = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionData_Data, aliasAdmissionData);
|
||||
if (StringUtil.IsEmpty(prm.AdmissionData))
|
||||
filters.Add(colAdmissionData + "=" + DbQuery.FormatForCondition(prm.AdmissionData));
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Common Properties.
|
||||
|
||||
if (filters.Count < 1) filters.Add("1=1");
|
||||
return filters;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// AdmissionData sort columns.
|
||||
public List<String> GetAdmissionDataSortColumns(SpmAdmissionData.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for AdmissionData columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SpmDbDfn.GetTableForColumn((SpmDbDfn.ColumnIdx)columnDfn.DbColumn) == SpmDbDfn.TableIdx.SwmAdmissionData)
|
||||
{
|
||||
sortCol = SpmDbDfn.GetColumnNameQual((SpmDbDfn.ColumnIdx)columnDfn.DbColumn, aliasAdmissionData);
|
||||
}
|
||||
else
|
||||
{
|
||||
sortCol = columnDfn.DataName;
|
||||
if (!StringUtil.IsEmpty(columnDfn.SortDataName))
|
||||
sortCol = columnDfn.SortDataName;
|
||||
}
|
||||
if (!sortCol.IsEmpty())
|
||||
{
|
||||
DbOrderByNullMode orderByNullMode = DbOrderByNullMode.Default; // eSaOrderByDemoteNulls, eSaOrderByPromoteNulls
|
||||
sortColumnNames.Add(DbQuery.FormatForOrderBy(sortCol, columnDfn.SortAscending, orderByNullMode).Concat(", "));
|
||||
}
|
||||
}
|
||||
sortColumnNames.RemoveBlanks();
|
||||
if (sortColumnNames.IsEmpty())
|
||||
{
|
||||
// Default sort columns:
|
||||
//sortColumnNames.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionData_Type, aliasAdmissionData) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// AdmissionData count.
|
||||
private long GetAdmissionDataCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return db.GetRowCount(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmissionData) + " As " + aliasAdmissionData, filter);
|
||||
}
|
||||
public override long GetAdmissionDataCount(SpmAdmissionData.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetAdmissionDataCount(GetAdmissionDataQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// AdmissionData list.
|
||||
public override List<SpmAdmissionData> GetAdmissionDataList(SpmAdmissionData.Params prm)
|
||||
{
|
||||
List<SpmAdmissionData> AdmissionDataes = new List<SpmAdmissionData>();
|
||||
DbQuery qry = new DbQuery(db.DbmsType);
|
||||
qry.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmissionData), aliasAdmissionData);
|
||||
qry.Columns.AddRange(SwmAdmissionData_Db.Fields);
|
||||
qry.Filters.AddRange(GetAdmissionDataQueryFilter(prm));
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
dbCommand.CommandText = qry.BuildQuery();
|
||||
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
|
||||
{
|
||||
while (dbDataReader.Read())
|
||||
{
|
||||
SwmAdmissionData_Db dbAdmissionData = new SwmAdmissionData_Db(DbInfo);
|
||||
dbAdmissionData.PopulateFrom(dbDataReader);
|
||||
AdmissionDataes.Add(CreateAdmissionData(dbAdmissionData));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Logger.Warn(GetType().Name + ".GetAdmissionDataList\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return AdmissionDataes;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// AdmissionData query execution.
|
||||
public override DbResultSet ExecuteAdmissionDataQuery(List<ColumnDfn> columns, SpmAdmissionData.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(db.DbmsType);
|
||||
query.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmissionData), aliasAdmissionData);
|
||||
|
||||
// AdmissionData Properties - add columns as defined in query list.
|
||||
/*if (columns.HasId((int)SpmAdmissionData.Column.Id))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionData_, aliasAdmissionData));*/
|
||||
if (columns.HasId((int)SpmAdmissionData.Column.AdmissionId))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionData_AdmissionId, aliasAdmissionData));
|
||||
if (columns.HasId((int)SpmAdmissionData.Column.Type) || columns.HasId((int)SpmAdmissionData.Column.Type_Desc))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionData_Type, aliasAdmissionData));
|
||||
if (columns.HasId((int)SpmAdmissionData.Column.AdmissionData))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionData_Data, aliasAdmissionData));
|
||||
|
||||
// Common Properties
|
||||
if (columns.HasId((int)SpmAdmissionData.Column.Notes))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionData_Notes, aliasAdmissionData));
|
||||
if (columns.HasId((int)SpmAdmissionData.Column.Status) || columns.HasId((int)SpmAdmissionData.Column.Status_Desc) || columns.HasId((int)SpmAdmissionData.Column.Status_Ind))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionData_Status, aliasAdmissionData));
|
||||
if (columns.HasId((int)SpmAdmissionData.Column.CreateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionData_CreateOn, aliasAdmissionData));
|
||||
if (columns.HasId((int)SpmAdmissionData.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionData_UpdateOn, aliasAdmissionData));
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetAdmissionDataQueryFilter(prm));
|
||||
|
||||
if (prm.IncludedIds.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetAdmissionDataSortColumns(prm))
|
||||
query.OrderBy.Add(sortColumn);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
//return new DbResultSet_DataTableReader(db, query.BuildQuery());
|
||||
return new Sarand.Win.Dbas.Data.DbResultSet_DataReader(db, query.BuildQuery());
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
public override DataValue GetAdmissionDataDataValue(ColumnDfn column, NamedValue.Map values)
|
||||
{
|
||||
DataValue value = new DataValue();
|
||||
switch ((SpmAdmissionData.Column)column.Id)
|
||||
{
|
||||
// Notes.
|
||||
case SpmAdmissionData.Column.Notes:
|
||||
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
|
||||
break;
|
||||
|
||||
// Status.
|
||||
case SpmAdmissionData.Column.Status_Desc:
|
||||
case SpmAdmissionData.Column.Status_Ind:
|
||||
{
|
||||
String statusCode = values.GetValue(column.DataName).ToString();
|
||||
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
|
||||
if (column.Id == (int)SpmAdmissionData.Column.Status_Desc)
|
||||
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
|
||||
else if (column.Id == (int)SpmAdmissionData.Column.Status_Ind)
|
||||
value = new DataValue(SpmAdmissionData.GetStatusTriState(status));
|
||||
}
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
}
|
||||
return value;
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,554 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Sarand.Core.App;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.Win.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
using Sarand.PatientMgr.Win.Dbas.Bus;
|
||||
using Sarand.PatientMgr.Win.Dbas.Internal;
|
||||
//using Sarand.PatientMgr.Win.Dbas.UpdateLog;
|
||||
using Sarand.Win.Dbas.Data;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
internal partial class SpmAdmissionMgr_Dbas : SpmAdmissionMgr
|
||||
{
|
||||
//*******************************************************************
|
||||
// A d m i s s i o n R o l e
|
||||
//*******************************************************************
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// AdmissionRole exists.
|
||||
public override bool AdmissionRoleExistsById(SysId admissionRoleId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(admissionRoleId)) return false;
|
||||
SpmAdmissionRole.Params prmAdmissionRole = new SpmAdmissionRole.Params();
|
||||
prmAdmissionRole.IncludedIds.Add(admissionRoleId);
|
||||
prmAdmissionRole.StatusCat = SpmAdmissionRole.StatusCat.Any;
|
||||
return GetAdmissionRoleCount(prmAdmissionRole) == 1;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get AdmissionRole.
|
||||
public override SpmAdmissionRole GetAdmissionRole(SpmAdmissionRole.Params prm)
|
||||
{
|
||||
return GetAdmissionRole(GetAdmissionRoleQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
private SpmAdmissionRole GetAdmissionRole(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetAdmissionRoleCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple AdmissionRolees found");
|
||||
return null;
|
||||
}
|
||||
SpmAdmissionRole admissionRole = null;
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmAdmissionRole_Db dbAdmissionRole = new SwmAdmissionRole_Db(DbInfo);
|
||||
dbAdmissionRole.PopulateFrom(dbCommand, aliasAdmissionRole, filter);
|
||||
admissionRole = CreateAdmissionRole(dbAdmissionRole);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
Logger.Warn(GetType().Name + ".GetAdmissionRole\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return admissionRole;
|
||||
}
|
||||
public override SpmAdmissionRole GetAdmissionRoleById(SysId admissionRoleId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(admissionRoleId)) return null;
|
||||
SpmAdmissionRole.Params prmAdmissionRole = new SpmAdmissionRole.Params();
|
||||
prmAdmissionRole.IncludedIds.Add(admissionRoleId);
|
||||
prmAdmissionRole.StatusCat = SpmAdmissionRole.StatusCat.Any;
|
||||
return GetAdmissionRole(prmAdmissionRole);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create AdmissionRole.
|
||||
public override SpmAdmissionRole CreateAdmissionRole(SysId admissionId, Spm.EmployeeRole employeeRole, Spm.EmployeeRoleCategory employeeRoleCategory)
|
||||
{
|
||||
return new SpmAdmissionRole_Dbas(UserContext, admissionId, employeeRole, employeeRoleCategory, 0);
|
||||
}
|
||||
private SpmAdmissionRole_Dbas CreateAdmissionRole(SwmAdmissionRole_Db dbAdmissionRole)
|
||||
{
|
||||
ClearErrorState();
|
||||
SpmAdmissionRole_Dbas admissionRole = new SpmAdmissionRole_Dbas(UserContext, new SysId(dbAdmissionRole._AdmissionId), (Spm.EmployeeRole)dbAdmissionRole._Role, (Spm.EmployeeRoleCategory)dbAdmissionRole._Category, (ushort)dbAdmissionRole._Flags);
|
||||
PopulateFrom(dbAdmissionRole, admissionRole);
|
||||
return admissionRole;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate AdmissionRole.
|
||||
public override bool IsValidAdmissionRoleData(SpmAdmissionRole.Data data, SpmAdmissionRole.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidAdmissionRoleData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert AdmissionRole.
|
||||
public override bool InsertAdmissionRole(SpmAdmissionRole admissionRole, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidAdmissionRole(admissionRole)) return false;
|
||||
if (SysId.IsValid(admissionRole.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmAdmissionRole_Db dbAdmissionRole = new SwmAdmissionRole_Db(DbInfo);
|
||||
PopulateTo(dbAdmissionRole, admissionRole, dbUpdateInfo);
|
||||
if (SwmAdmissionRole_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbAdmissionRole._AdmissionId = SysId.ToInt(db.GetNextId("AdmissionRole", dbUpdateInfo));
|
||||
}
|
||||
dbAdmissionRole.ExecuteInsertCommand(dbCommand);
|
||||
admissionRole.Id = new SysId(dbAdmissionRole._AdmissionId);
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update AdmissionRole.
|
||||
public override bool UpdateAdmissionRole(SpmAdmissionRole admissionRole, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidAdmissionRole(admissionRole)) return false;
|
||||
if (!SysId.IsValid(admissionRole.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve AdmissionRole.
|
||||
dbConnection.Open();
|
||||
SwmAdmissionRole_Db dbAdmissionRole = new SwmAdmissionRole_Db(DbInfo);
|
||||
dbAdmissionRole.PopulateFrom(dbCommand, aliasAdmissionRole, "Id=" + SysId.ToString(admissionRole.Id));
|
||||
//SpmUpdateLogItemMonitor_AdmissionRole updateLogMonitor = new SpmUpdateLogItemMonitor_AdmissionRole(UserContext, CreateAdmissionRole(dbAdmissionRole));
|
||||
|
||||
// Update properties.
|
||||
PopulateTo(dbAdmissionRole, admissionRole, dbUpdateInfo);
|
||||
dbAdmissionRole.ExecuteUpdateCommand(dbCommand);
|
||||
|
||||
/* Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(admissionRole);
|
||||
updateLogMonitor.LogUpdates();*/
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete AdmissionRole.
|
||||
public override bool AdmissionRoleCanBeDeleted(SpmAdmissionRole admissionRole)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.AdmissionRoleCanBeDeleted(admissionRole)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteAdmissionRole(SpmAdmissionRole admissionRole, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!AdmissionRoleCanBeDeleted(admissionRole)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve AdmissionRole.
|
||||
dbConnection.Open();
|
||||
SwmAdmissionRole_Db dbAdmissionRole = new SwmAdmissionRole_Db(DbInfo);
|
||||
dbAdmissionRole.PopulateFrom(dbCommand, aliasAdmissionRole, "Id=" + admissionRole.Id.ToString());
|
||||
// Delete AdmissionRole.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmissionRole) + " WHERE Id=" + SysId.ToString(admissionRole.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(SwmAdmissionRole_Db dbAdmissionRole, SpmAdmissionRole admissionRole, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbAdmissionRole._AdmissionId = admissionRole.AdmissionId.ToInt();
|
||||
dbAdmissionRole._Role = (short)admissionRole.EmployeeRole;
|
||||
dbAdmissionRole._Category = (short)admissionRole.EmployeeRoleCategory;
|
||||
dbAdmissionRole._Seq = (byte)admissionRole.Seq;
|
||||
dbAdmissionRole._EmployeeRoleId = admissionRole.EmployeeRoleId.ToInt();
|
||||
dbAdmissionRole._EmployeeCode = admissionRole.EmployeeCode;
|
||||
|
||||
dbAdmissionRole._Notes = admissionRole.Notes;
|
||||
dbAdmissionRole._Status = SacsSystem.GetStatusCode(admissionRole.Status);
|
||||
dbAdmissionRole._Flags = (short)admissionRole.Flags;
|
||||
if (!SysId.IsValid(admissionRole.Id))
|
||||
{
|
||||
dbAdmissionRole._CreateOn = DateTime.UtcNow;
|
||||
dbAdmissionRole._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbAdmissionRole._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbAdmissionRole._UpdateOn = DateTime.UtcNow;
|
||||
dbAdmissionRole._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbAdmissionRole._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(SwmAdmissionRole_Db dbAdmissionRole, SpmAdmissionRole admissionRole)
|
||||
{
|
||||
admissionRole.AdmissionId = new SysId(dbAdmissionRole._AdmissionId);
|
||||
admissionRole.EmployeeRole = (Spm.EmployeeRole)dbAdmissionRole._Role;
|
||||
admissionRole.EmployeeRoleCategory = (Spm.EmployeeRoleCategory)dbAdmissionRole._Category;
|
||||
admissionRole.Seq = (ushort)dbAdmissionRole._Seq;
|
||||
admissionRole.EmployeeRoleId = new SysId(dbAdmissionRole._EmployeeRoleId);
|
||||
admissionRole.EmployeeCode = dbAdmissionRole._EmployeeCode;
|
||||
|
||||
|
||||
|
||||
// Category - replacing zero/null values with 'Operating'.
|
||||
admissionRole.EmployeeRoleCategory = (Spm.EmployeeRoleCategory)dbAdmissionRole._Category;
|
||||
if (admissionRole.EmployeeRoleCategory < Spm.EmployeeRoleCategory.Operating)
|
||||
admissionRole.EmployeeRoleCategory = Spm.EmployeeRoleCategory.Operating;
|
||||
|
||||
|
||||
|
||||
admissionRole.Notes = dbAdmissionRole._Notes;
|
||||
admissionRole.Status = SacsSystem.GetStatusForCode(dbAdmissionRole._Status);
|
||||
admissionRole.SetCreateStamp(dbAdmissionRole._CreateOn, new SysId(dbAdmissionRole._CreateBy), dbAdmissionRole._CreateHost);
|
||||
admissionRole.SetUpdateStamp(dbAdmissionRole._UpdateOn, new SysId(dbAdmissionRole._UpdateBy), dbAdmissionRole._UpdateHost);
|
||||
admissionRole.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// AdmissionRole column definitions.
|
||||
private static readonly String aliasAdmissionRole = "aAdmRle";
|
||||
private void SetAdmissionRoleColDfn
|
||||
(ColumnDfn col, String caption, int width, SpmDbDfn.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SpmDbDfn.GetTableForColumn(dbCol) == SpmDbDfn.TableIdx.SwmAdmissionRole)
|
||||
alias = aliasAdmissionRole;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SpmDbDfn.GetColumnName(dbCol, false), SpmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SpmDbDfn.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SpmDbDfn.GetColTextLen(dbCol);
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
// Getting prmAdmissionRole column definition.
|
||||
public override ColumnDfn GetAdmissionRoleColumnDfn(SpmAdmissionRole.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
case SpmAdmissionRole.Column.Pos:
|
||||
SetAdmissionRoleColDfn(columnDfn, "Pos", 42, SpmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SpmAdmissionRole.Column.Id:
|
||||
SetAdmissionRoleColDfn(columnDfn, "Id", 40, SpmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
// AdmissionRole Properties.
|
||||
case SpmAdmissionRole.Column.AdmissionId:
|
||||
SetAdmissionRoleColDfn(columnDfn, "AdmissionId", 40, SpmDbDfn.ColumnIdx.SwmAdmissionRole_AdmissionId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SpmAdmissionRole.Column.Role:
|
||||
SetAdmissionRoleColDfn(columnDfn, "Role", 40, SpmDbDfn.ColumnIdx.SwmAdmissionRole_Role, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmAdmissionRole.Column.Category:
|
||||
SetAdmissionRoleColDfn(columnDfn, "Category", 40, SpmDbDfn.ColumnIdx.SwmAdmissionRole_Category, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmAdmissionRole.Column.Seq:
|
||||
SetAdmissionRoleColDfn(columnDfn, "Seq", 45, SpmDbDfn.ColumnIdx.SwmAdmissionRole_Seq, ColumnAlignment.Right);
|
||||
break;
|
||||
case SpmAdmissionRole.Column.EmployeeRoleId:
|
||||
SetAdmissionRoleColDfn(columnDfn, "EmployeeRole Id", 80, SpmDbDfn.ColumnIdx.SwmAdmissionRole_EmployeeRoleId);
|
||||
break;
|
||||
case SpmAdmissionRole.Column.EmployeeCode:
|
||||
SetAdmissionRoleColDfn(columnDfn, "EmployeeCode", 90, SpmDbDfn.ColumnIdx.SwmAdmissionRole_EmployeeCode);
|
||||
break;
|
||||
|
||||
// Common properties.
|
||||
case SpmAdmissionRole.Column.Notes:
|
||||
SetAdmissionRoleColDfn(columnDfn, "Notes", 200, SpmDbDfn.ColumnIdx.SwmAdmissionRole_Notes);
|
||||
break;
|
||||
case SpmAdmissionRole.Column.Status:
|
||||
SetAdmissionRoleColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmAdmissionRole_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmAdmissionRole.Column.Status_Desc:
|
||||
SetAdmissionRoleColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmAdmissionRole_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmAdmissionRole.Column.Status_Ind:
|
||||
SetAdmissionRoleColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmAdmissionRole_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SpmAdmissionRole.Column.CreateOn_Date:
|
||||
SetAdmissionRoleColDfn(columnDfn, "Created", 65, SpmDbDfn.ColumnIdx.SwmAdmissionRole_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SpmAdmissionRole.Column.UpdateOn_Date:
|
||||
SetAdmissionRoleColDfn(columnDfn, "Updated", 65, SpmDbDfn.ColumnIdx.SwmAdmissionRole_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
}
|
||||
if (!String.IsNullOrEmpty(caption))
|
||||
columnDfn.Caption = caption;
|
||||
if (width > 0)
|
||||
columnDfn.Width = width;
|
||||
return columnDfn;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// AdmissionRole query filter.
|
||||
public override List<string> GetAdmissionRoleQueryFilter(SpmAdmissionRole.Params prm)
|
||||
{
|
||||
List<String> filters = new List<String>();
|
||||
|
||||
// AdmissionRole Id.
|
||||
String includedIds = prm.IncludedIds.Concat(",");
|
||||
if (!includedIds.IsEmpty())
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_AdmissionId, aliasAdmissionRole) + " IN (" + includedIds + ")");
|
||||
String excludedIds = prm.ExcludedIds.Concat(",");
|
||||
if (!excludedIds.IsEmpty())
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_AdmissionId, aliasAdmissionRole) + " NOT IN (" + excludedIds + ")");
|
||||
|
||||
// Admission Id.
|
||||
String colAdmisssionRole_AdmissionId = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_AdmissionId, aliasAdmissionRole);
|
||||
if (SysId.IsValid(prm.AdmissionId))
|
||||
filters.Add(colAdmisssionRole_AdmissionId + "=" + prm.AdmissionId.ToString());
|
||||
|
||||
// Employee Role & Category.
|
||||
String colRole = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_Role, aliasAdmissionRole);
|
||||
if (prm.EmployeeRole > 0)
|
||||
filters.Add(colRole + "=" + ((int)prm.EmployeeRole).ToString());
|
||||
String colCategory = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_Category, aliasAdmissionRole);
|
||||
if (prm.EmployeeRoleCategory > 0)
|
||||
filters.Add(colCategory + "=" + ((int)prm.EmployeeRoleCategory).ToString());
|
||||
|
||||
// Seq.
|
||||
String colSeq = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_Seq, aliasAdmissionRole);
|
||||
if (prm.Seq > 0)
|
||||
filters.Add(colSeq + "=" + ((int)prm.Seq).ToString());
|
||||
|
||||
// Employee Role Id.
|
||||
String colAdmisssionRole_EmployeeRoleId = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_EmployeeRoleId, aliasAdmissionRole);
|
||||
if (SysId.IsValid(prm.EmployeeRoleId))
|
||||
filters.Add(colAdmisssionRole_EmployeeRoleId + "=" + prm.EmployeeRoleId.ToString());
|
||||
|
||||
|
||||
// EmployeeCode.
|
||||
String colEmployeeCode = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_EmployeeCode, aliasAdmissionRole);
|
||||
if (StringUtil.IsEmpty(prm.EmployeeCode))
|
||||
filters.Add(colEmployeeCode + "=" + DbQuery.FormatForCondition(prm.EmployeeCode));
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Common Properties.
|
||||
|
||||
if (filters.Count < 1) filters.Add("1=1");
|
||||
return filters;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// AdmissionRole sort columns.
|
||||
public List<String> GetAdmissionRoleSortColumns(SpmAdmissionRole.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for AdmissionRole columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SpmDbDfn.GetTableForColumn((SpmDbDfn.ColumnIdx)columnDfn.DbColumn) == SpmDbDfn.TableIdx.SwmAdmissionRole)
|
||||
{
|
||||
sortCol = SpmDbDfn.GetColumnNameQual((SpmDbDfn.ColumnIdx)columnDfn.DbColumn, aliasAdmissionRole);
|
||||
}
|
||||
else
|
||||
{
|
||||
sortCol = columnDfn.DataName;
|
||||
if (!StringUtil.IsEmpty(columnDfn.SortDataName))
|
||||
sortCol = columnDfn.SortDataName;
|
||||
}
|
||||
if (!sortCol.IsEmpty())
|
||||
{
|
||||
DbOrderByNullMode orderByNullMode = DbOrderByNullMode.Default; // eSaOrderByDemoteNulls, eSaOrderByPromoteNulls
|
||||
sortColumnNames.Add(DbQuery.FormatForOrderBy(sortCol, columnDfn.SortAscending, orderByNullMode).Concat(", "));
|
||||
}
|
||||
}
|
||||
sortColumnNames.RemoveBlanks();
|
||||
if (sortColumnNames.IsEmpty())
|
||||
{
|
||||
// Default sort columns:
|
||||
//sortColumnNames.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_Type, aliasAdmissionRole) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// AdmissionRole count.
|
||||
private long GetAdmissionRoleCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return db.GetRowCount(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmissionRole) + " As " + aliasAdmissionRole, filter);
|
||||
}
|
||||
public override long GetAdmissionRoleCount(SpmAdmissionRole.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetAdmissionRoleCount(GetAdmissionRoleQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// AdmissionRole list.
|
||||
public override List<SpmAdmissionRole> GetAdmissionRoleList(SpmAdmissionRole.Params prm)
|
||||
{
|
||||
List<SpmAdmissionRole> AdmissionRolees = new List<SpmAdmissionRole>();
|
||||
DbQuery qry = new DbQuery(db.DbmsType);
|
||||
qry.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmissionRole), aliasAdmissionRole);
|
||||
qry.Columns.AddRange(SwmAdmissionRole_Db.Fields);
|
||||
qry.Filters.AddRange(GetAdmissionRoleQueryFilter(prm));
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
dbCommand.CommandText = qry.BuildQuery();
|
||||
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
|
||||
{
|
||||
while (dbDataReader.Read())
|
||||
{
|
||||
SwmAdmissionRole_Db dbAdmissionRole = new SwmAdmissionRole_Db(DbInfo);
|
||||
dbAdmissionRole.PopulateFrom(dbDataReader);
|
||||
AdmissionRolees.Add(CreateAdmissionRole(dbAdmissionRole));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Logger.Warn(GetType().Name + ".GetAdmissionRoleList\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return AdmissionRolees;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// AdmissionRole query execution.
|
||||
public override DbResultSet ExecuteAdmissionRoleQuery(List<ColumnDfn> columns, SpmAdmissionRole.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(db.DbmsType);
|
||||
query.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmissionRole), aliasAdmissionRole);
|
||||
|
||||
// AdmissionRole Properties - add columns as defined in query list.
|
||||
/*if (columns.HasId((int)SpmAdmissionRole.Column.Id))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_, aliasAdmissionRole));*/
|
||||
if (columns.HasId((int)SpmAdmissionRole.Column.AdmissionId))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_AdmissionId, aliasAdmissionRole));
|
||||
if (columns.HasId((int)SpmAdmissionRole.Column.Role))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_Role, aliasAdmissionRole));
|
||||
if (columns.HasId((int)SpmAdmissionRole.Column.Category))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_Category, aliasAdmissionRole));
|
||||
if (columns.HasId((int)SpmAdmissionRole.Column.Seq))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_Seq, aliasAdmissionRole));
|
||||
if (columns.HasId((int)SpmAdmissionRole.Column.EmployeeRoleId))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_EmployeeRoleId, aliasAdmissionRole));
|
||||
if (columns.HasId((int)SpmAdmissionRole.Column.EmployeeCode))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_EmployeeCode, aliasAdmissionRole));
|
||||
|
||||
// Common Properties
|
||||
if (columns.HasId((int)SpmAdmissionRole.Column.Notes))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_Notes, aliasAdmissionRole));
|
||||
if (columns.HasId((int)SpmAdmissionRole.Column.Status) || columns.HasId((int)SpmAdmissionRole.Column.Status_Desc) || columns.HasId((int)SpmAdmissionRole.Column.Status_Ind))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_Status, aliasAdmissionRole));
|
||||
if (columns.HasId((int)SpmAdmissionRole.Column.CreateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_CreateOn, aliasAdmissionRole));
|
||||
if (columns.HasId((int)SpmAdmissionRole.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_UpdateOn, aliasAdmissionRole));
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetAdmissionRoleQueryFilter(prm));
|
||||
|
||||
if (prm.IncludedIds.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetAdmissionRoleSortColumns(prm))
|
||||
query.OrderBy.Add(sortColumn);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
//return new DbResultSet_DataTableReader(db, query.BuildQuery());
|
||||
return new Sarand.Win.Dbas.Data.DbResultSet_DataReader(db, query.BuildQuery());
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
public override DataValue GetAdmissionRoleDataValue(ColumnDfn column, NamedValue.Map values)
|
||||
{
|
||||
DataValue value = new DataValue();
|
||||
switch ((SpmAdmissionRole.Column)column.Id)
|
||||
{
|
||||
// Notes.
|
||||
case SpmAdmissionRole.Column.Notes:
|
||||
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
|
||||
break;
|
||||
|
||||
// Status.
|
||||
case SpmAdmissionRole.Column.Status_Desc:
|
||||
case SpmAdmissionRole.Column.Status_Ind:
|
||||
{
|
||||
String statusCode = values.GetValue(column.DataName).ToString();
|
||||
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
|
||||
if (column.Id == (int)SpmAdmissionRole.Column.Status_Desc)
|
||||
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
|
||||
else if (column.Id == (int)SpmAdmissionRole.Column.Status_Ind)
|
||||
value = new DataValue(SpmAdmissionRole.GetStatusTriState(status));
|
||||
}
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
}
|
||||
return value;
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -1,5 +1,8 @@
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
using Sarand.PatientMgr.Win.Dbas.Data;
|
||||
using Sarand.Win.Dbas.Base;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
@@ -11,6 +14,8 @@ namespace Sarand.PatientMgr.Win.Dbas.Mgr
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private SacsDatabase db = null;
|
||||
private readonly SpmDbDataItem.DatabaseInfo dbInfo;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
@@ -21,6 +26,8 @@ namespace Sarand.PatientMgr.Win.Dbas.Mgr
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
protected ISacsDatabase Database { get { return db; } }
|
||||
protected SpmDbDataItem.DatabaseInfo DbInfo { get { return dbInfo; } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
|
||||
@@ -0,0 +1,567 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Sarand.Core.App;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.Win.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
using Sarand.PatientMgr.Win.Dbas.Bus;
|
||||
using Sarand.PatientMgr.Win.Dbas.Internal;
|
||||
//using Sarand.PatientMgr.Win.Dbas.UpdateLog;
|
||||
using Sarand.Win.Dbas.Data;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
internal partial class SpmDepartmentMgr_Dbas : SpmDepartmentMgr
|
||||
{
|
||||
//*******************************************************************
|
||||
// D e p a r t m e n t
|
||||
//*******************************************************************
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Department exists.
|
||||
public override bool DepartmentExistsById(SysId departmentId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(departmentId)) return false;
|
||||
SpmDepartment.Params prmDepartment = new SpmDepartment.Params();
|
||||
prmDepartment.IncludedIds.Add(departmentId);
|
||||
prmDepartment.StatusCat = SpmDepartment.StatusCat.Any;
|
||||
return GetDepartmentCount(prmDepartment) == 1;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get Department.
|
||||
public override SpmDepartment GetDepartment(SpmDepartment.Params prm)
|
||||
{
|
||||
return GetDepartment(GetDepartmentQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
private SpmDepartment GetDepartment(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetDepartmentCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple Departmentes found");
|
||||
return null;
|
||||
}
|
||||
SpmDepartment department = null;
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmDepartment_Db dbDepartment = new SwmDepartment_Db(DbInfo);
|
||||
dbDepartment.PopulateFrom(dbCommand, aliasDepartment, filter);
|
||||
department = CreateDepartment(dbDepartment);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
Logger.Warn(GetType().Name + ".GetDepartment\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return department;
|
||||
}
|
||||
public override SpmDepartment GetDepartmentById(SysId departmentId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(departmentId)) return null;
|
||||
SpmDepartment.Params prmDepartment = new SpmDepartment.Params();
|
||||
prmDepartment.IncludedIds.Add(departmentId);
|
||||
prmDepartment.StatusCat = SpmDepartment.StatusCat.Any;
|
||||
return GetDepartment(prmDepartment);
|
||||
}
|
||||
public override SpmDepartment GetDepartmentByName(String name)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!StringUtil.IsEmpty(name)) return null;
|
||||
SpmDepartment.Params prmDepartment = new SpmDepartment.Params();
|
||||
prmDepartment.Name = name;
|
||||
prmDepartment.StatusCat = SpmDepartment.StatusCat.Any;
|
||||
return GetDepartment(prmDepartment);
|
||||
}
|
||||
public override SpmDepartment GetDepartmentByFacilityId(SysId facilityId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(facilityId)) return null;
|
||||
SpmDepartment.Params prmDepartment = new SpmDepartment.Params();
|
||||
prmDepartment.IncludedIds.Add(facilityId);
|
||||
prmDepartment.StatusCat = SpmDepartment.StatusCat.Any;
|
||||
return GetDepartment(prmDepartment);
|
||||
}
|
||||
public override SpmDepartment GetDepartmentByFacilityTemplateId(SysId facilityTemplateId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(facilityTemplateId)) return null;
|
||||
SpmDepartment.Params prmDepartment = new SpmDepartment.Params();
|
||||
prmDepartment.IncludedIds.Add(facilityTemplateId);
|
||||
prmDepartment.StatusCat = SpmDepartment.StatusCat.Any;
|
||||
return GetDepartment(prmDepartment);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create Department.
|
||||
public override SpmDepartment CreateDepartment()
|
||||
{
|
||||
return new SpmDepartment_Dbas(UserContext, null, 0);
|
||||
}
|
||||
private SpmDepartment_Dbas CreateDepartment(SwmDepartment_Db dbDepartment)
|
||||
{
|
||||
ClearErrorState();
|
||||
SpmDepartment_Dbas department = new SpmDepartment_Dbas(UserContext, new SysId(dbDepartment._Id), (ushort)dbDepartment._Flags);
|
||||
PopulateFrom(dbDepartment, department);
|
||||
return department;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate Department.
|
||||
public override bool IsValidDepartmentData(SpmDepartment.Data data, SpmDepartment.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidDepartmentData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert Department.
|
||||
public override bool InsertDepartment(SpmDepartment department, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidDepartment(department)) return false;
|
||||
if (SysId.IsValid(department.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmDepartment_Db dbDepartment = new SwmDepartment_Db(DbInfo);
|
||||
PopulateTo(dbDepartment, department, dbUpdateInfo);
|
||||
if (SwmDepartment_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbDepartment._Id = SysId.ToInt(db.GetNextId("Department", dbUpdateInfo));
|
||||
}
|
||||
dbDepartment.ExecuteInsertCommand(dbCommand);
|
||||
department.Id = new SysId(dbDepartment._Id);
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update Department.
|
||||
public override bool UpdateDepartment(SpmDepartment department, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidDepartment(department)) return false;
|
||||
if (!SysId.IsValid(department.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve Department.
|
||||
dbConnection.Open();
|
||||
SwmDepartment_Db dbDepartment = new SwmDepartment_Db(DbInfo);
|
||||
dbDepartment.PopulateFrom(dbCommand, aliasDepartment, "Id=" + SysId.ToString(department.Id));
|
||||
//SpmUpdateLogItemMonitor_Department updateLogMonitor = new SpmUpdateLogItemMonitor_Department(UserContext, CreateDepartment(dbDepartment));
|
||||
|
||||
// Update properties.
|
||||
PopulateTo(dbDepartment, department, dbUpdateInfo);
|
||||
dbDepartment.ExecuteUpdateCommand(dbCommand);
|
||||
|
||||
/* Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(department);
|
||||
updateLogMonitor.LogUpdates();*/
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete Department.
|
||||
public override bool DepartmentCanBeDeleted(SpmDepartment department)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.DepartmentCanBeDeleted(department)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteDepartment(SpmDepartment department, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!DepartmentCanBeDeleted(department)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve Department.
|
||||
dbConnection.Open();
|
||||
SwmDepartment_Db dbDepartment = new SwmDepartment_Db(DbInfo);
|
||||
dbDepartment.PopulateFrom(dbCommand, aliasDepartment, "Id=" + department.Id.ToString());
|
||||
// Delete Department.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmDepartment) + " WHERE Id=" + SysId.ToString(department.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(SwmDepartment_Db dbDepartment, SpmDepartment department, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbDepartment._Id = department.Id.ToInt();
|
||||
dbDepartment._Name = department.Name;
|
||||
dbDepartment._FacilityTypes = (int)department.GetFacilityTypes();
|
||||
dbDepartment._AllowAnyFacility = (int)department.GetAllowAnyFacilities();
|
||||
dbDepartment._ApplicFrom = department.ApplicationFrom;
|
||||
dbDepartment._ApplicTo = department.ApplicationTo;
|
||||
|
||||
dbDepartment._Notes = department.Notes;
|
||||
dbDepartment._Status = SacsSystem.GetStatusCode(department.Status);
|
||||
dbDepartment._Flags = (short)department.Flags;
|
||||
if (!SysId.IsValid(department.Id))
|
||||
{
|
||||
dbDepartment._CreateOn = DateTime.UtcNow;
|
||||
dbDepartment._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbDepartment._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbDepartment._UpdateOn = DateTime.UtcNow;
|
||||
dbDepartment._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbDepartment._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(SwmDepartment_Db dbDepartment, SpmDepartment department)
|
||||
{
|
||||
department.Id = new SysId(dbDepartment._Id);
|
||||
department.Name = dbDepartment._Name;
|
||||
department.ApplicationFrom = dbDepartment._ApplicFrom;
|
||||
department.ApplicationTo = dbDepartment._ApplicTo;
|
||||
|
||||
department.Notes = dbDepartment._Notes;
|
||||
department.Status = SacsSystem.GetStatusForCode(dbDepartment._Status);
|
||||
department.SetCreateStamp(dbDepartment._CreateOn, new SysId(dbDepartment._CreateBy), dbDepartment._CreateHost);
|
||||
department.SetUpdateStamp(dbDepartment._UpdateOn, new SysId(dbDepartment._UpdateBy), dbDepartment._UpdateHost);
|
||||
department.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Department column definitions.
|
||||
private static readonly String aliasDepartment = "aDept";
|
||||
private void SetDepartmentColDfn
|
||||
(ColumnDfn col, String caption, int width, SpmDbDfn.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SpmDbDfn.GetTableForColumn(dbCol) == SpmDbDfn.TableIdx.SwmDepartment)
|
||||
alias = aliasDepartment;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SpmDbDfn.GetColumnName(dbCol, false), SpmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SpmDbDfn.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SpmDbDfn.GetColTextLen(dbCol);
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
// Getting prmDepartment column definition.
|
||||
public override ColumnDfn GetDepartmentColumnDfn(SpmDepartment.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
case SpmDepartment.Column.Pos:
|
||||
SetDepartmentColDfn(columnDfn, "Pos", 42, SpmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SpmDepartment.Column.Id:
|
||||
SetDepartmentColDfn(columnDfn, "Id", 40, SpmDbDfn.ColumnIdx.SwmDepartment_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
// Department Properties.
|
||||
case SpmDepartment.Column.Name:
|
||||
SetDepartmentColDfn(columnDfn, "Name", 60, SpmDbDfn.ColumnIdx.SwmDepartment_Name, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
case SpmDepartment.Column.ApplicatonFrom:
|
||||
SetDepartmentColDfn(columnDfn, "ApplicationFrom", 70, SpmDbDfn.ColumnIdx.SwmDepartment_ApplicFrom, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.DateFormat = "d-MMM-yy";
|
||||
break;
|
||||
case SpmDepartment.Column.ApplicationTo:
|
||||
SetDepartmentColDfn(columnDfn, "ApplicationTo", 70, SpmDbDfn.ColumnIdx.SwmDepartment_ApplicTo, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.DateFormat = "d-MMM-yy";
|
||||
break;
|
||||
|
||||
// Common properties.
|
||||
case SpmDepartment.Column.Notes:
|
||||
SetDepartmentColDfn(columnDfn, "Notes", 200, SpmDbDfn.ColumnIdx.SwmDepartment_Notes);
|
||||
break;
|
||||
case SpmDepartment.Column.Status:
|
||||
SetDepartmentColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmDepartment_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmDepartment.Column.Status_Desc:
|
||||
SetDepartmentColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmDepartment_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmDepartment.Column.Status_Ind:
|
||||
SetDepartmentColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmDepartment_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SpmDepartment.Column.CreateOn_Date:
|
||||
SetDepartmentColDfn(columnDfn, "Created", 65, SpmDbDfn.ColumnIdx.SwmDepartment_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SpmDepartment.Column.UpdateOn_Date:
|
||||
SetDepartmentColDfn(columnDfn, "Updated", 65, SpmDbDfn.ColumnIdx.SwmDepartment_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
}
|
||||
if (!String.IsNullOrEmpty(caption))
|
||||
columnDfn.Caption = caption;
|
||||
if (width > 0)
|
||||
columnDfn.Width = width;
|
||||
return columnDfn;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Department query filter.
|
||||
public override List<string> GetDepartmentQueryFilter(SpmDepartment.Params prm)
|
||||
{
|
||||
List<String> filters = new List<String>();
|
||||
|
||||
// Department Id.
|
||||
String includedIds = prm.IncludedIds.Concat(",");
|
||||
if (!includedIds.IsEmpty())
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmDepartment_Id, aliasDepartment) + " IN (" + includedIds + ")");
|
||||
String excludedIds = prm.ExcludedIds.Concat(",");
|
||||
if (!excludedIds.IsEmpty())
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmDepartment_Id, aliasDepartment) + " NOT IN (" + excludedIds + ")");
|
||||
|
||||
// Partial name.
|
||||
String namePartial = DbQuery.FormatForCondition(prm.NamePartial);
|
||||
String colName = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmDepartment_Name, aliasDepartment);
|
||||
if (!StringUtil.IsEmpty(namePartial))
|
||||
filters.Add(DbQuery.FormatFn_Left(colName, namePartial.Length) + "='" + namePartial + "'");
|
||||
|
||||
// Applicable dates.
|
||||
DateTime nullDate = new DateTime(1970, 1, 1);
|
||||
String colApplicFrom = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmDepartment_ApplicFrom, aliasDepartment);
|
||||
String colApplicTo = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmDepartment_ApplicTo, aliasDepartment);
|
||||
if (DateUtil.IsValid(prm.Application))
|
||||
{
|
||||
// Looking for roles that are applicable on the specified date.
|
||||
filters.Add("(" + colApplicFrom + " IS NULL OR " + colApplicFrom + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicFrom + "<" + DbQuery.FormatDateForCondition(DateUtil.IncrementDate(prm.Application, 1)) + ")");
|
||||
filters.Add("(" + colApplicTo + " IS NULL OR " + colApplicTo + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicTo + ">=" + DbQuery.FormatDateForCondition(prm.Application) + ")");
|
||||
}
|
||||
else if (DateUtil.IsValid(prm.ApplicationFrom) || DateUtil.IsValid(prm.ApplicationTo))
|
||||
{
|
||||
// Looking for roles that overlap with the specified date range.
|
||||
if (DateUtil.IsValid(prm.ApplicationFrom) && DateUtil.IsValid(prm.ApplicationTo))
|
||||
{
|
||||
// Both from and to dates specified.
|
||||
filters.Add("(" + colApplicFrom + " IS NULL OR " + colApplicFrom + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicFrom + "<" + DbQuery.FormatDateForCondition(DateUtil.IncrementDate(prm.ApplicationTo, 1)) + ")");
|
||||
filters.Add("(" + colApplicTo + " IS NULL OR " + colApplicTo + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicTo + ">=" + DbQuery.FormatDateForCondition(prm.ApplicationFrom) + ")");
|
||||
}
|
||||
else if (DateUtil.IsValid(prm.ApplicationFrom))
|
||||
{
|
||||
// Only 'from' date specified - Matches with ApplicTo not specified or after 'from' date.
|
||||
filters.Add("(" + colApplicTo + " IS NULL OR " + colApplicTo + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicTo + ">=" + DbQuery.FormatDateForCondition(prm.ApplicationFrom) + ")");
|
||||
String filter = filters[0];
|
||||
}
|
||||
else if (DateUtil.IsValid(prm.ApplicationTo))
|
||||
{
|
||||
// Only 'to' date specified - Matches with ApplicFrom not specified or before 'to' date.
|
||||
filters.Add("(" + colApplicFrom + " IS NULL OR " + colApplicFrom + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicFrom + "<" + DbQuery.FormatDateForCondition(DateUtil.IncrementDate(prm.ApplicationTo, 1)) + ")");
|
||||
String filter = filters[0];
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Common Properties.
|
||||
|
||||
if (filters.Count < 1) filters.Add("1=1");
|
||||
return filters;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Department sort columns.
|
||||
public List<String> GetDepartmentSortColumns(SpmDepartment.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for Department columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SpmDbDfn.GetTableForColumn((SpmDbDfn.ColumnIdx)columnDfn.DbColumn) == SpmDbDfn.TableIdx.SwmDepartment)
|
||||
{
|
||||
sortCol = SpmDbDfn.GetColumnNameQual((SpmDbDfn.ColumnIdx)columnDfn.DbColumn, aliasDepartment);
|
||||
}
|
||||
else
|
||||
{
|
||||
sortCol = columnDfn.DataName;
|
||||
if (!StringUtil.IsEmpty(columnDfn.SortDataName))
|
||||
sortCol = columnDfn.SortDataName;
|
||||
}
|
||||
if (!sortCol.IsEmpty())
|
||||
{
|
||||
DbOrderByNullMode orderByNullMode = DbOrderByNullMode.Default; // eSaOrderByDemoteNulls, eSaOrderByPromoteNulls
|
||||
sortColumnNames.Add(DbQuery.FormatForOrderBy(sortCol, columnDfn.SortAscending, orderByNullMode).Concat(", "));
|
||||
}
|
||||
}
|
||||
sortColumnNames.RemoveBlanks();
|
||||
if (sortColumnNames.IsEmpty())
|
||||
{
|
||||
// Default sort columns:
|
||||
//sortColumnNames.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmDepartment_Type, aliasDepartment) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Department count.
|
||||
private long GetDepartmentCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return db.GetRowCount(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmDepartment) + " As " + aliasDepartment, filter);
|
||||
}
|
||||
public override long GetDepartmentCount(SpmDepartment.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetDepartmentCount(GetDepartmentQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Department list.
|
||||
public override List<SpmDepartment> GetDepartmentList(SpmDepartment.Params prm)
|
||||
{
|
||||
List<SpmDepartment> Departmentes = new List<SpmDepartment>();
|
||||
DbQuery qry = new DbQuery(db.DbmsType);
|
||||
qry.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmDepartment), aliasDepartment);
|
||||
qry.Columns.AddRange(SwmDepartment_Db.Fields);
|
||||
qry.Filters.AddRange(GetDepartmentQueryFilter(prm));
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
dbCommand.CommandText = qry.BuildQuery();
|
||||
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
|
||||
{
|
||||
while (dbDataReader.Read())
|
||||
{
|
||||
SwmDepartment_Db dbDepartment = new SwmDepartment_Db(DbInfo);
|
||||
dbDepartment.PopulateFrom(dbDataReader);
|
||||
Departmentes.Add(CreateDepartment(dbDepartment));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Logger.Warn(GetType().Name + ".GetDepartmentList\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return Departmentes;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Department query execution.
|
||||
public override DbResultSet ExecuteDepartmentQuery(List<ColumnDfn> columns, SpmDepartment.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(db.DbmsType);
|
||||
query.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmDepartment), aliasDepartment);
|
||||
|
||||
// Department Properties - add columns as defined in query list.
|
||||
if (columns.HasId((int)SpmDepartment.Column.Id))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmDepartment_Id, aliasDepartment));
|
||||
if (columns.HasId((int)SpmDepartment.Column.Name))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmDepartment_Name, aliasDepartment));
|
||||
if (columns.HasId((int)SpmDepartment.Column.ApplicatonFrom))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmDepartment_ApplicFrom, aliasDepartment));
|
||||
if (columns.HasId((int)SpmDepartment.Column.ApplicationTo))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmDepartment_ApplicTo, aliasDepartment));
|
||||
|
||||
|
||||
// Common Properties
|
||||
if (columns.HasId((int)SpmDepartment.Column.Notes))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmDepartment_Notes, aliasDepartment));
|
||||
if (columns.HasId((int)SpmDepartment.Column.Status) || columns.HasId((int)SpmDepartment.Column.Status_Desc) || columns.HasId((int)SpmDepartment.Column.Status_Ind))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmDepartment_Status, aliasDepartment));
|
||||
if (columns.HasId((int)SpmDepartment.Column.CreateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmDepartment_CreateOn, aliasDepartment));
|
||||
if (columns.HasId((int)SpmDepartment.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmDepartment_UpdateOn, aliasDepartment));
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetDepartmentQueryFilter(prm));
|
||||
|
||||
if (prm.IncludedIds.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetDepartmentSortColumns(prm))
|
||||
query.OrderBy.Add(sortColumn);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
//return new DbResultSet_DataTableReader(db, query.BuildQuery());
|
||||
return new Sarand.Win.Dbas.Data.DbResultSet_DataReader(db, query.BuildQuery());
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
public override DataValue GetDepartmentDataValue(ColumnDfn column, NamedValue.Map values)
|
||||
{
|
||||
DataValue value = new DataValue();
|
||||
switch ((SpmDepartment.Column)column.Id)
|
||||
{
|
||||
// Notes.
|
||||
case SpmDepartment.Column.Notes:
|
||||
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
|
||||
break;
|
||||
|
||||
// Status.
|
||||
case SpmDepartment.Column.Status_Desc:
|
||||
case SpmDepartment.Column.Status_Ind:
|
||||
{
|
||||
String statusCode = values.GetValue(column.DataName).ToString();
|
||||
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
|
||||
if (column.Id == (int)SpmDepartment.Column.Status_Desc)
|
||||
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
|
||||
else if (column.Id == (int)SpmDepartment.Column.Status_Ind)
|
||||
value = new DataValue(SpmDepartment.GetStatusTriState(status));
|
||||
}
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
}
|
||||
return value;
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,564 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Sarand.Core.App;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.Win.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
using Sarand.PatientMgr.Win.Dbas.Bus;
|
||||
using Sarand.PatientMgr.Win.Dbas.Internal;
|
||||
//using Sarand.PatientMgr.Win.Dbas.UpdateLog;
|
||||
using Sarand.Win.Dbas.Data;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
internal partial class SpmDepartmentMgr_Dbas : SpmDepartmentMgr
|
||||
{
|
||||
//*******************************************************************
|
||||
// E m p l o y e e R o l e
|
||||
//*******************************************************************
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// EmployeeRole exists.
|
||||
public override bool EmployeeRoleExistsById(SysId employeeRoleId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(employeeRoleId)) return false;
|
||||
SpmEmployeeRole.Params prmEmployeeRole = new SpmEmployeeRole.Params();
|
||||
prmEmployeeRole.IncludedIds.Add(employeeRoleId);
|
||||
prmEmployeeRole.StatusCat = SpmEmployeeRole.StatusCat.Any;
|
||||
return GetEmployeeRoleCount(prmEmployeeRole) == 1;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get EmployeeRole.
|
||||
public override SpmEmployeeRole GetEmployeeRole(SpmEmployeeRole.Params prm)
|
||||
{
|
||||
return GetEmployeeRole(GetEmployeeRoleQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
private SpmEmployeeRole GetEmployeeRole(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetEmployeeRoleCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple EmployeeRolees found");
|
||||
return null;
|
||||
}
|
||||
SpmEmployeeRole employeeRole = null;
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmEmployeeRole_Db dbEmployeeRole = new SwmEmployeeRole_Db(DbInfo);
|
||||
dbEmployeeRole.PopulateFrom(dbCommand, aliasEmployeeRole, filter);
|
||||
employeeRole = CreateEmployeeRole(dbEmployeeRole);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
Logger.Warn(GetType().Name + ".GetEmployeeRole\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return employeeRole;
|
||||
}
|
||||
public override SpmEmployeeRole GetEmployeeRoleById(SysId employeeRoleId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(employeeRoleId)) return null;
|
||||
SpmEmployeeRole.Params prmEmployeeRole = new SpmEmployeeRole.Params();
|
||||
prmEmployeeRole.IncludedIds.Add(employeeRoleId);
|
||||
prmEmployeeRole.StatusCat = SpmEmployeeRole.StatusCat.Any;
|
||||
return GetEmployeeRole(prmEmployeeRole);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create EmployeeRole.
|
||||
public override SpmEmployeeRole CreateEmployeeRole(SysId deparmentId, SysId employeeId, Spm.EmployeeRole employeeRole)
|
||||
{
|
||||
return new SpmEmployeeRole_Dbas(UserContext, deparmentId, employeeId, employeeRole, 0);
|
||||
}
|
||||
private SpmEmployeeRole_Dbas CreateEmployeeRole(SwmEmployeeRole_Db dbEmployeeRole)
|
||||
{
|
||||
ClearErrorState();
|
||||
SpmEmployeeRole_Dbas employeeRole = new SpmEmployeeRole_Dbas(UserContext, new SysId(dbEmployeeRole._DepartmentId), new SysId(dbEmployeeRole._EmployeeId), (Spm.EmployeeRole)dbEmployeeRole._Role, (ushort)dbEmployeeRole._Flags);
|
||||
PopulateFrom(dbEmployeeRole, employeeRole);
|
||||
return employeeRole;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate EmployeeRole.
|
||||
public override bool IsValidEmployeeRoleData(SpmEmployeeRole.Data data, SpmEmployeeRole.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidEmployeeRoleData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert EmployeeRole.
|
||||
public override bool InsertEmployeeRole(SpmEmployeeRole employeeRole, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidEmployeeRole(employeeRole)) return false;
|
||||
if (SysId.IsValid(employeeRole.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmEmployeeRole_Db dbEmployeeRole = new SwmEmployeeRole_Db(DbInfo);
|
||||
PopulateTo(dbEmployeeRole, employeeRole, dbUpdateInfo);
|
||||
if (SwmEmployeeRole_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbEmployeeRole._Id = SysId.ToInt(db.GetNextId("EmployeeRole", dbUpdateInfo));
|
||||
}
|
||||
dbEmployeeRole.ExecuteInsertCommand(dbCommand);
|
||||
employeeRole.Id = new SysId(dbEmployeeRole._Id);
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update EmployeeRole.
|
||||
public override bool UpdateEmployeeRole(SpmEmployeeRole employeeRole, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidEmployeeRole(employeeRole)) return false;
|
||||
if (!SysId.IsValid(employeeRole.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve EmployeeRole.
|
||||
dbConnection.Open();
|
||||
SwmEmployeeRole_Db dbEmployeeRole = new SwmEmployeeRole_Db(DbInfo);
|
||||
dbEmployeeRole.PopulateFrom(dbCommand, aliasEmployeeRole, "Id=" + SysId.ToString(employeeRole.Id));
|
||||
//SpmUpdateLogItemMonitor_EmployeeRole updateLogMonitor = new SpmUpdateLogItemMonitor_EmployeeRole(UserContext, CreateEmployeeRole(dbEmployeeRole));
|
||||
|
||||
// Update properties.
|
||||
PopulateTo(dbEmployeeRole, employeeRole, dbUpdateInfo);
|
||||
dbEmployeeRole.ExecuteUpdateCommand(dbCommand);
|
||||
|
||||
/* Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(employeeRole);
|
||||
updateLogMonitor.LogUpdates();*/
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete EmployeeRole.
|
||||
public override bool EmployeeRoleCanBeDeleted(SpmEmployeeRole employeeRole)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.EmployeeRoleCanBeDeleted(employeeRole)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteEmployeeRole(SpmEmployeeRole employeeRole, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!EmployeeRoleCanBeDeleted(employeeRole)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve EmployeeRole.
|
||||
dbConnection.Open();
|
||||
SwmEmployeeRole_Db dbEmployeeRole = new SwmEmployeeRole_Db(DbInfo);
|
||||
dbEmployeeRole.PopulateFrom(dbCommand, aliasEmployeeRole, "Id=" + employeeRole.Id.ToString());
|
||||
// Delete EmployeeRole.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmEmployeeRole) + " WHERE Id=" + SysId.ToString(employeeRole.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(SwmEmployeeRole_Db dbEmployeeRole, SpmEmployeeRole employeeRole, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbEmployeeRole._Id = employeeRole.Id.ToInt();
|
||||
dbEmployeeRole._ApplicFrom = employeeRole.ApplicationFrom;
|
||||
dbEmployeeRole._ApplicTo = employeeRole.ApplicationTo;
|
||||
|
||||
dbEmployeeRole._Notes = employeeRole.Notes;
|
||||
dbEmployeeRole._Status = SacsSystem.GetStatusCode(employeeRole.Status);
|
||||
dbEmployeeRole._Flags = (short)employeeRole.Flags;
|
||||
if (!SysId.IsValid(employeeRole.Id))
|
||||
{
|
||||
dbEmployeeRole._CreateOn = DateTime.UtcNow;
|
||||
dbEmployeeRole._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbEmployeeRole._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbEmployeeRole._UpdateOn = DateTime.UtcNow;
|
||||
dbEmployeeRole._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbEmployeeRole._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(SwmEmployeeRole_Db dbEmployeeRole, SpmEmployeeRole employeeRole)
|
||||
{
|
||||
employeeRole.Id = new SysId(dbEmployeeRole._Id);
|
||||
employeeRole.ApplicationFrom = dbEmployeeRole._ApplicFrom;
|
||||
employeeRole.ApplicationTo = dbEmployeeRole._ApplicTo;
|
||||
|
||||
employeeRole.Notes = dbEmployeeRole._Notes;
|
||||
employeeRole.Status = SacsSystem.GetStatusForCode(dbEmployeeRole._Status);
|
||||
employeeRole.SetCreateStamp(dbEmployeeRole._CreateOn, new SysId(dbEmployeeRole._CreateBy), dbEmployeeRole._CreateHost);
|
||||
employeeRole.SetUpdateStamp(dbEmployeeRole._UpdateOn, new SysId(dbEmployeeRole._UpdateBy), dbEmployeeRole._UpdateHost);
|
||||
employeeRole.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// EmployeeRole column definitions.
|
||||
private static readonly String aliasEmployeeRole = "aEmpRole";
|
||||
private void SetEmployeeRoleColDfn
|
||||
(ColumnDfn col, String caption, int width, SpmDbDfn.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SpmDbDfn.GetTableForColumn(dbCol) == SpmDbDfn.TableIdx.SwmEmployeeRole)
|
||||
alias = aliasEmployeeRole;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SpmDbDfn.GetColumnName(dbCol, false), SpmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SpmDbDfn.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SpmDbDfn.GetColTextLen(dbCol);
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
// Getting prmEmployeeRole column definition.
|
||||
public override ColumnDfn GetEmployeeRoleColumnDfn(SpmEmployeeRole.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
case SpmEmployeeRole.Column.Pos:
|
||||
SetEmployeeRoleColDfn(columnDfn, "Pos", 42, SpmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SpmEmployeeRole.Column.Id:
|
||||
SetEmployeeRoleColDfn(columnDfn, "Id", 40, SpmDbDfn.ColumnIdx.SwmEmployeeRole_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
// EmployeeRole Properties.
|
||||
case SpmEmployeeRole.Column.DepartmentId:
|
||||
SetEmployeeRoleColDfn(columnDfn, "DepartmentId", 45, SpmDbDfn.ColumnIdx.SwmEmployeeRole_DepartmentId, ColumnAlignment.Right);
|
||||
break;
|
||||
case SpmEmployeeRole.Column.EmployeeId:
|
||||
SetEmployeeRoleColDfn(columnDfn, "EmployeeId", 45, SpmDbDfn.ColumnIdx.SwmEmployeeRole_EmployeeId, ColumnAlignment.Right);
|
||||
break;
|
||||
case SpmEmployeeRole.Column.Role:
|
||||
SetEmployeeRoleColDfn(columnDfn, "Role", 40, SpmDbDfn.ColumnIdx.SwmEmployeeRole_Role, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmEmployeeRole.Column.ApplicationFrom:
|
||||
SetEmployeeRoleColDfn(columnDfn, "ApplicationFrom", 70, SpmDbDfn.ColumnIdx.SwmEmployeeRole_ApplicFrom, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.DateFormat = "d-MMM-yy";
|
||||
break;
|
||||
case SpmEmployeeRole.Column.ApplicationTo:
|
||||
SetEmployeeRoleColDfn(columnDfn, "ApplicationTo", 70, SpmDbDfn.ColumnIdx.SwmEmployeeRole_ApplicTo, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.DateFormat = "d-MMM-yy";
|
||||
break;
|
||||
|
||||
// Common properties.
|
||||
case SpmEmployeeRole.Column.Notes:
|
||||
SetEmployeeRoleColDfn(columnDfn, "Notes", 200, SpmDbDfn.ColumnIdx.SwmEmployeeRole_Notes);
|
||||
break;
|
||||
case SpmEmployeeRole.Column.Status:
|
||||
SetEmployeeRoleColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmEmployeeRole_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmEmployeeRole.Column.Status_Desc:
|
||||
SetEmployeeRoleColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmEmployeeRole_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmEmployeeRole.Column.Status_Ind:
|
||||
SetEmployeeRoleColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmEmployeeRole_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SpmEmployeeRole.Column.CreateOn_Date:
|
||||
SetEmployeeRoleColDfn(columnDfn, "Created", 65, SpmDbDfn.ColumnIdx.SwmEmployeeRole_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SpmEmployeeRole.Column.UpdateOn_Date:
|
||||
SetEmployeeRoleColDfn(columnDfn, "Updated", 65, SpmDbDfn.ColumnIdx.SwmEmployeeRole_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
}
|
||||
if (!String.IsNullOrEmpty(caption))
|
||||
columnDfn.Caption = caption;
|
||||
if (width > 0)
|
||||
columnDfn.Width = width;
|
||||
return columnDfn;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// EmployeeRole query filter.
|
||||
public override List<string> GetEmployeeRoleQueryFilter(SpmEmployeeRole.Params prm)
|
||||
{
|
||||
List<String> filters = new List<String>();
|
||||
|
||||
// EmployeeRole Id.
|
||||
String includedIds = prm.IncludedIds.Concat(",");
|
||||
if (!includedIds.IsEmpty())
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployeeRole_Id, aliasEmployeeRole) + " IN (" + includedIds + ")");
|
||||
String excludedIds = prm.ExcludedIds.Concat(",");
|
||||
if (!excludedIds.IsEmpty())
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployeeRole_Id, aliasEmployeeRole) + " NOT IN (" + excludedIds + ")");
|
||||
|
||||
// Employee:
|
||||
if (SysId.IsValid(prm.EmployeeId))
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployeeRole_EmployeeId, aliasEmployeeRole) + "=" + prm.EmployeeId.ToString());
|
||||
// Role:
|
||||
if ((int)prm.EmployeeRole > 0)
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployeeRole_Role, aliasEmployeeRole) + "=" + ((int)prm.EmployeeRole).ToString());
|
||||
|
||||
// Employee name.
|
||||
String initials = DbQuery.FormatForCondition(prm.Initials);
|
||||
String surname = DbQuery.FormatForCondition(prm.Surname);
|
||||
if (!StringUtil.IsEmpty(initials) || !StringUtil.IsEmpty(surname))
|
||||
{
|
||||
// Common database definitions.
|
||||
String aliasEmployee = "aEmp";
|
||||
String colEmployeeId = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployee_Id, aliasEmployee);
|
||||
String colInitials = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployee_Initials, aliasEmployee);
|
||||
String colSurname = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployee_Surname, aliasEmployee);
|
||||
|
||||
// Build sub query on employee.
|
||||
DbQuery qry = new DbQuery(db.DbmsType);
|
||||
qry.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmEmployee), aliasEmployee);
|
||||
qry.Columns.Add(colEmployeeId);
|
||||
|
||||
// Employee must match role.
|
||||
qry.Filters.Add(colEmployeeId + "=" + SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployeeRole_EmployeeId, aliasEmployeeRole));
|
||||
if (!initials.IsEmpty())
|
||||
qry.Filters.Add(DbQuery.FormatFn_Left(colInitials, prm.Initials.Length) + "='" + initials + "'");
|
||||
if (!surname.IsEmpty())
|
||||
qry.Filters.Add(DbQuery.FormatFn_Left(colSurname, prm.Surname.Length) + "='" + surname + "'");
|
||||
filters.Add("EXISTS(" + qry.BuildQuery() + ")");
|
||||
}
|
||||
|
||||
// Applicable dates.
|
||||
DateTime nullDate = new DateTime(1970, 1, 1);
|
||||
String colApplicFrom = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployeeRole_ApplicFrom, aliasEmployeeRole);
|
||||
String colApplicTo = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployeeRole_ApplicTo, aliasEmployeeRole);
|
||||
if (DateUtil.IsValid(prm.Application))
|
||||
{
|
||||
// Looking for roles that are applicable on the specified date.
|
||||
filters.Add("(" + colApplicFrom + " IS NULL OR " + colApplicFrom + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicFrom + "<" + DbQuery.FormatDateForCondition(DateUtil.IncrementDate(prm.Application, 1)) + ")");
|
||||
filters.Add("(" + colApplicTo + " IS NULL OR " + colApplicTo + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicTo + ">=" + DbQuery.FormatDateForCondition(prm.Application) + ")");
|
||||
}
|
||||
else if (DateUtil.IsValid(prm.ApplicationFrom) || DateUtil.IsValid(prm.ApplicationTo))
|
||||
{
|
||||
// Looking for roles that overlap with the specified date range.
|
||||
if (DateUtil.IsValid(prm.ApplicationFrom) && DateUtil.IsValid(prm.ApplicationTo))
|
||||
{
|
||||
// Both from and to dates specified.
|
||||
filters.Add("(" + colApplicFrom + " IS NULL OR " + colApplicFrom + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicFrom + "<" + DbQuery.FormatDateForCondition(DateUtil.IncrementDate(prm.ApplicationTo, 1)) + ")");
|
||||
filters.Add("(" + colApplicTo + " IS NULL OR " + colApplicTo + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicTo + ">=" + DbQuery.FormatDateForCondition(prm.ApplicationFrom) + ")");
|
||||
}
|
||||
else if (DateUtil.IsValid(prm.ApplicationFrom))
|
||||
{
|
||||
// Only 'from' date specified - Matches with ApplicTo not specified or after 'from' date.
|
||||
filters.Add("(" + colApplicTo + " IS NULL OR " + colApplicTo + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicTo + ">=" + DbQuery.FormatDateForCondition(prm.ApplicationFrom) + ")");
|
||||
}
|
||||
else if (DateUtil.IsValid(prm.ApplicationTo))
|
||||
{
|
||||
// Only 'to' date specified - Matches with ApplicFrom not specified or before 'to' date.
|
||||
filters.Add("(" + colApplicFrom + " IS NULL OR " + colApplicFrom + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicFrom + "<" + DbQuery.FormatDateForCondition(DateUtil.IncrementDate(prm.ApplicationTo, 1)) + ")");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Common Properties.
|
||||
|
||||
if (filters.Count < 1) filters.Add("1=1");
|
||||
return filters;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// EmployeeRole sort columns.
|
||||
public List<String> GetEmployeeRoleSortColumns(SpmEmployeeRole.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for EmployeeRole columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SpmDbDfn.GetTableForColumn((SpmDbDfn.ColumnIdx)columnDfn.DbColumn) == SpmDbDfn.TableIdx.SwmEmployeeRole)
|
||||
{
|
||||
sortCol = SpmDbDfn.GetColumnNameQual((SpmDbDfn.ColumnIdx)columnDfn.DbColumn, aliasEmployeeRole);
|
||||
}
|
||||
else
|
||||
{
|
||||
sortCol = columnDfn.DataName;
|
||||
if (!StringUtil.IsEmpty(columnDfn.SortDataName))
|
||||
sortCol = columnDfn.SortDataName;
|
||||
}
|
||||
if (!sortCol.IsEmpty())
|
||||
{
|
||||
DbOrderByNullMode orderByNullMode = DbOrderByNullMode.Default; // eSaOrderByDemoteNulls, eSaOrderByPromoteNulls
|
||||
sortColumnNames.Add(DbQuery.FormatForOrderBy(sortCol, columnDfn.SortAscending, orderByNullMode).Concat(", "));
|
||||
}
|
||||
}
|
||||
sortColumnNames.RemoveBlanks();
|
||||
if (sortColumnNames.IsEmpty())
|
||||
{
|
||||
// Default sort columns:
|
||||
//sortColumnNames.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployeeRole_Type, aliasEmployeeRole) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// EmployeeRole count.
|
||||
private long GetEmployeeRoleCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return db.GetRowCount(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmEmployeeRole) + " As " + aliasEmployeeRole, filter);
|
||||
}
|
||||
public override long GetEmployeeRoleCount(SpmEmployeeRole.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetEmployeeRoleCount(GetEmployeeRoleQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// EmployeeRole list.
|
||||
public override List<SpmEmployeeRole> GetEmployeeRoleList(SpmEmployeeRole.Params prm)
|
||||
{
|
||||
List<SpmEmployeeRole> EmployeeRolees = new List<SpmEmployeeRole>();
|
||||
DbQuery qry = new DbQuery(db.DbmsType);
|
||||
qry.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmEmployeeRole), aliasEmployeeRole);
|
||||
qry.Columns.AddRange(SwmEmployeeRole_Db.Fields);
|
||||
qry.Filters.AddRange(GetEmployeeRoleQueryFilter(prm));
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
dbCommand.CommandText = qry.BuildQuery();
|
||||
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
|
||||
{
|
||||
while (dbDataReader.Read())
|
||||
{
|
||||
SwmEmployeeRole_Db dbEmployeeRole = new SwmEmployeeRole_Db(DbInfo);
|
||||
dbEmployeeRole.PopulateFrom(dbDataReader);
|
||||
EmployeeRolees.Add(CreateEmployeeRole(dbEmployeeRole));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Logger.Warn(GetType().Name + ".GetEmployeeRoleList\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return EmployeeRolees;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// EmployeeRole query execution.
|
||||
public override DbResultSet ExecuteEmployeeRoleQuery(List<ColumnDfn> columns, SpmEmployeeRole.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(db.DbmsType);
|
||||
query.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmEmployeeRole), aliasEmployeeRole);
|
||||
|
||||
// EmployeeRole Properties - add columns as defined in query list.
|
||||
if (columns.HasId((int)SpmEmployeeRole.Column.Id))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployeeRole_Id, aliasEmployeeRole));
|
||||
if (columns.HasId((int)SpmFacility.Column.ApplicFrom))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_ApplicFrom, aliasFacility));
|
||||
if (columns.HasId((int)SpmFacility.Column.ApplicTo))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_ApplicTo, aliasFacility));
|
||||
|
||||
// Common Properties
|
||||
if (columns.HasId((int)SpmEmployeeRole.Column.Notes))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployeeRole_Notes, aliasEmployeeRole));
|
||||
if (columns.HasId((int)SpmEmployeeRole.Column.Status) || columns.HasId((int)SpmEmployeeRole.Column.Status_Desc) || columns.HasId((int)SpmEmployeeRole.Column.Status_Ind))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployeeRole_Status, aliasEmployeeRole));
|
||||
if (columns.HasId((int)SpmEmployeeRole.Column.CreateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployeeRole_CreateOn, aliasEmployeeRole));
|
||||
if (columns.HasId((int)SpmEmployeeRole.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployeeRole_UpdateOn, aliasEmployeeRole));
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetEmployeeRoleQueryFilter(prm));
|
||||
|
||||
if (prm.IncludedIds.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetEmployeeRoleSortColumns(prm))
|
||||
query.OrderBy.Add(sortColumn);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
//return new DbResultSet_DataTableReader(db, query.BuildQuery());
|
||||
return new Sarand.Win.Dbas.Data.DbResultSet_DataReader(db, query.BuildQuery());
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
public override DataValue GetEmployeeRoleDataValue(ColumnDfn column, NamedValue.Map values)
|
||||
{
|
||||
DataValue value = new DataValue();
|
||||
switch ((SpmEmployeeRole.Column)column.Id)
|
||||
{
|
||||
// Notes.
|
||||
case SpmEmployeeRole.Column.Notes:
|
||||
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
|
||||
break;
|
||||
|
||||
// Status.
|
||||
case SpmEmployeeRole.Column.Status_Desc:
|
||||
case SpmEmployeeRole.Column.Status_Ind:
|
||||
{
|
||||
String statusCode = values.GetValue(column.DataName).ToString();
|
||||
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
|
||||
if (column.Id == (int)SpmEmployeeRole.Column.Status_Desc)
|
||||
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
|
||||
else if (column.Id == (int)SpmEmployeeRole.Column.Status_Ind)
|
||||
value = new DataValue(SpmEmployeeRole.GetStatusTriState(status));
|
||||
}
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
}
|
||||
return value;
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,592 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Sarand.Core.App;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.Win.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
using Sarand.PatientMgr.Win.Dbas.Bus;
|
||||
using Sarand.PatientMgr.Win.Dbas.Internal;
|
||||
//using Sarand.PatientMgr.Win.Dbas.UpdateLog;
|
||||
using Sarand.Win.Dbas.Data;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
internal partial class SpmDepartmentMgr_Dbas : SpmDepartmentMgr
|
||||
{
|
||||
//*******************************************************************
|
||||
// F a c i l i t y
|
||||
//*******************************************************************
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Facility exists.
|
||||
public override bool FacilityExistsById(SysId facilityId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(facilityId)) return false;
|
||||
SpmFacility.Params prmFacility = new SpmFacility.Params();
|
||||
prmFacility.IncludedIds.Add(facilityId);
|
||||
prmFacility.StatusCat = SpmFacility.StatusCat.Any;
|
||||
return GetFacilityCount(prmFacility) == 1;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get Facility.
|
||||
public override SpmFacility GetFacility(SpmFacility.Params prm)
|
||||
{
|
||||
return GetFacility(GetFacilityQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
private SpmFacility GetFacility(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetFacilityCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple Facilityes found");
|
||||
return null;
|
||||
}
|
||||
SpmFacility facility = null;
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmFacility_Db dbFacility = new SwmFacility_Db(DbInfo);
|
||||
dbFacility.PopulateFrom(dbCommand, aliasFacility, filter);
|
||||
facility = CreateFacility(dbFacility);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
Logger.Warn(GetType().Name + ".GetFacility\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return facility;
|
||||
}
|
||||
public override SpmFacility GetFacilityById(SysId facilityId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(facilityId)) return null;
|
||||
SpmFacility.Params prmFacility = new SpmFacility.Params();
|
||||
prmFacility.IncludedIds.Add(facilityId);
|
||||
prmFacility.StatusCat = SpmFacility.StatusCat.Any;
|
||||
return GetFacility(prmFacility);
|
||||
}
|
||||
public override SpmFacility GetFacilityByName(String name)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!StringUtil.IsEmpty(name)) return null;
|
||||
SpmFacility.Params prmFacility = new SpmFacility.Params();
|
||||
prmFacility.NamePartial = name;
|
||||
prmFacility.StatusCat = SpmFacility.StatusCat.Any;
|
||||
return GetFacility(prmFacility);
|
||||
}
|
||||
public override SpmFacility GetFacilityByTemplateId(SysId facilityTemplateId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(facilityTemplateId)) return null;
|
||||
SpmFacility.Params prmFacility = new SpmFacility.Params();
|
||||
prmFacility.IncludedIds.Add(facilityTemplateId);
|
||||
prmFacility.StatusCat = SpmFacility.StatusCat.Any;
|
||||
return GetFacility(prmFacility);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create Facility.
|
||||
public override SpmFacility CreateFacility(SysId facilityId, SysId departmentId, Spm.FacilityType facilityType)
|
||||
{
|
||||
return new SpmFacility_Dbas(UserContext, facilityId, departmentId, facilityType, 0);
|
||||
}
|
||||
private SpmFacility_Dbas CreateFacility(SwmFacility_Db dbFacility)
|
||||
{
|
||||
ClearErrorState();
|
||||
SpmFacility_Dbas facility = new SpmFacility_Dbas(UserContext, new SysId(dbFacility._Id), new SysId(dbFacility._DepartmentId), (Spm.FacilityType)dbFacility._Type, (ushort)dbFacility._Flags);
|
||||
PopulateFrom(dbFacility, facility);
|
||||
return facility;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate Facility.
|
||||
public override bool IsValidFacilityData(SpmFacility.Data data, SpmFacility.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidFacilityData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert Facility.
|
||||
public override bool InsertFacility(SpmFacility facility, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidFacility(facility)) return false;
|
||||
if (SysId.IsValid(facility.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmFacility_Db dbFacility = new SwmFacility_Db(DbInfo);
|
||||
PopulateTo(dbFacility, facility, dbUpdateInfo);
|
||||
if (SwmFacility_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbFacility._Id = SysId.ToInt(db.GetNextId("Facility", dbUpdateInfo));
|
||||
}
|
||||
dbFacility.ExecuteInsertCommand(dbCommand);
|
||||
facility.Id = new SysId(dbFacility._Id);
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update Facility.
|
||||
public override bool UpdateFacility(SpmFacility facility, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidFacility(facility)) return false;
|
||||
if (!SysId.IsValid(facility.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve Facility.
|
||||
dbConnection.Open();
|
||||
SwmFacility_Db dbFacility = new SwmFacility_Db(DbInfo);
|
||||
dbFacility.PopulateFrom(dbCommand, aliasFacility, "Id=" + SysId.ToString(facility.Id));
|
||||
//SpmUpdateLogItemMonitor_Facility updateLogMonitor = new SpmUpdateLogItemMonitor_Facility(UserContext, CreateFacility(dbFacility));
|
||||
|
||||
// Update properties.
|
||||
PopulateTo(dbFacility, facility, dbUpdateInfo);
|
||||
dbFacility.ExecuteUpdateCommand(dbCommand);
|
||||
|
||||
/* Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(facility);
|
||||
updateLogMonitor.LogUpdates();*/
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete Facility.
|
||||
public override bool FacilityCanBeDeleted(SpmFacility facility)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.FacilityCanBeDeleted(facility)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteFacility(SpmFacility facility, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!FacilityCanBeDeleted(facility)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve Facility.
|
||||
dbConnection.Open();
|
||||
SwmFacility_Db dbFacility = new SwmFacility_Db(DbInfo);
|
||||
dbFacility.PopulateFrom(dbCommand, aliasFacility, "Id=" + facility.Id.ToString());
|
||||
// Delete Facility.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmFacility) + " WHERE Id=" + SysId.ToString(facility.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(SwmFacility_Db dbFacility, SpmFacility facility, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbFacility._Id = facility.Id.ToInt();
|
||||
dbFacility._Name = facility.Name;
|
||||
dbFacility._SortCode = facility.SortCode;
|
||||
dbFacility._Description = facility.Desc;
|
||||
dbFacility._TemplateMapType = (short)facility.TemplateMapType;
|
||||
dbFacility._ScheduleFreezeType = (short)facility.ScheduleFreezeType;
|
||||
dbFacility._ScheduleFreezeData = facility.ScheduleFreezeData;
|
||||
dbFacility._ApplicFrom = facility.ApplicationFrom;
|
||||
dbFacility._ApplicTo = facility.ApplicationTo;
|
||||
|
||||
dbFacility._Notes = facility.Notes;
|
||||
dbFacility._Status = SacsSystem.GetStatusCode(facility.Status);
|
||||
dbFacility._Flags = (short)facility.Flags;
|
||||
if (!SysId.IsValid(facility.Id))
|
||||
{
|
||||
dbFacility._CreateOn = DateTime.UtcNow;
|
||||
dbFacility._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbFacility._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbFacility._UpdateOn = DateTime.UtcNow;
|
||||
dbFacility._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbFacility._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(SwmFacility_Db dbFacility, SpmFacility facility)
|
||||
{
|
||||
facility.Id = new SysId(dbFacility._Id);
|
||||
facility.Name = dbFacility._Name;
|
||||
facility.SortCode = dbFacility._SortCode;
|
||||
facility.Desc = dbFacility._Description;
|
||||
facility.TemplateMapType = (Spm.FacilityTemplateMapType)dbFacility._TemplateMapType;
|
||||
facility.ScheduleFreezeType = (Spm.ScheduleFreezeType)dbFacility._ScheduleFreezeType;
|
||||
facility.ScheduleFreezeData = dbFacility._ScheduleFreezeData;
|
||||
facility.ApplicationFrom = dbFacility._ApplicFrom;
|
||||
facility.ApplicationTo = dbFacility._ApplicTo;
|
||||
|
||||
facility.Notes = dbFacility._Notes;
|
||||
facility.Status = SacsSystem.GetStatusForCode(dbFacility._Status);
|
||||
facility.SetCreateStamp(dbFacility._CreateOn, new SysId(dbFacility._CreateBy), dbFacility._CreateHost);
|
||||
facility.SetUpdateStamp(dbFacility._UpdateOn, new SysId(dbFacility._UpdateBy), dbFacility._UpdateHost);
|
||||
facility.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Facility column definitions.
|
||||
private static readonly String aliasFacility = "aFac";
|
||||
private void SetFacilityColDfn
|
||||
(ColumnDfn col, String caption, int width, SpmDbDfn.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SpmDbDfn.GetTableForColumn(dbCol) == SpmDbDfn.TableIdx.SwmFacility)
|
||||
alias = aliasFacility;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SpmDbDfn.GetColumnName(dbCol, false), SpmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SpmDbDfn.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SpmDbDfn.GetColTextLen(dbCol);
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
// Getting prmFacility column definition.
|
||||
public override ColumnDfn GetFacilityColumnDfn(SpmFacility.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
case SpmFacility.Column.Pos:
|
||||
SetFacilityColDfn(columnDfn, "Pos", 42, SpmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SpmFacility.Column.Id:
|
||||
SetFacilityColDfn(columnDfn, "Id", 40, SpmDbDfn.ColumnIdx.SwmFacility_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
// Facility Properties.
|
||||
case SpmFacility.Column.DepartmentId:
|
||||
SetFacilityColDfn(columnDfn, "DepartmentId", 45, SpmDbDfn.ColumnIdx.SwmFacility_DepartmentId, ColumnAlignment.Right);
|
||||
break;
|
||||
case SpmFacility.Column.Type:
|
||||
SetFacilityColDfn(columnDfn, "Type", 40, SpmDbDfn.ColumnIdx.SwmFacility_Type, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmFacility.Column.Type_Desc:
|
||||
SetFacilityColDfn(columnDfn, "Type", 90, SpmDbDfn.ColumnIdx.SwmFacility_Type, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmFacility.Column.Name:
|
||||
SetFacilityColDfn(columnDfn, "Name", 60, SpmDbDfn.ColumnIdx.SwmFacility_Name, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
case SpmFacility.Column.SortCode:
|
||||
SetFacilityColDfn(columnDfn, "SortCode", 60, SpmDbDfn.ColumnIdx.SwmFacility_SortCode, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
case SpmFacility.Column.Desc:
|
||||
SetFacilityColDfn(columnDfn, "Desc", 60, SpmDbDfn.ColumnIdx.SwmFacility_Description, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
case SpmFacility.Column.TemplateMapType:
|
||||
SetFacilityColDfn(columnDfn, "TemplateMapType", 40, SpmDbDfn.ColumnIdx.SwmFacility_Type, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmFacility.Column.ScheduleFreezeType:
|
||||
SetFacilityColDfn(columnDfn, "ScheduleFreezeType", 40, SpmDbDfn.ColumnIdx.SwmFacility_ScheduleFreezeType, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmFacility.Column.FreezeTime:
|
||||
SetFacilityColDfn(columnDfn, "ApplicationTo", 70, SpmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.DateFormat = "d-MMM-yy";
|
||||
break;
|
||||
case SpmFacility.Column.FreezeData:
|
||||
SetFacilityColDfn(columnDfn, "ScheduleFreezeData", 60, SpmDbDfn.ColumnIdx.SwmFacility_ScheduleFreezeData, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
case SpmFacility.Column.ApplicFrom:
|
||||
SetFacilityColDfn(columnDfn, "ApplicationFrom", 70, SpmDbDfn.ColumnIdx.SwmFacility_ApplicFrom, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.DateFormat = "d-MMM-yy";
|
||||
break;
|
||||
case SpmFacility.Column.ApplicTo:
|
||||
SetFacilityColDfn(columnDfn, "ApplicationTo", 70, SpmDbDfn.ColumnIdx.SwmFacility_ApplicTo, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.DateFormat = "d-MMM-yy";
|
||||
break;
|
||||
|
||||
// Common properties.
|
||||
case SpmFacility.Column.Notes:
|
||||
SetFacilityColDfn(columnDfn, "Notes", 200, SpmDbDfn.ColumnIdx.SwmFacility_Notes);
|
||||
break;
|
||||
case SpmFacility.Column.Status:
|
||||
SetFacilityColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmFacility_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmFacility.Column.Status_Desc:
|
||||
SetFacilityColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmFacility_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmFacility.Column.Status_Ind:
|
||||
SetFacilityColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmFacility_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SpmFacility.Column.CreateOn_Date:
|
||||
SetFacilityColDfn(columnDfn, "Created", 65, SpmDbDfn.ColumnIdx.SwmFacility_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SpmFacility.Column.UpdateOn_Date:
|
||||
SetFacilityColDfn(columnDfn, "Updated", 65, SpmDbDfn.ColumnIdx.SwmFacility_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
}
|
||||
if (!String.IsNullOrEmpty(caption))
|
||||
columnDfn.Caption = caption;
|
||||
if (width > 0)
|
||||
columnDfn.Width = width;
|
||||
return columnDfn;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Facility query filter.
|
||||
public override List<string> GetFacilityQueryFilter(SpmFacility.Params prm)
|
||||
{
|
||||
List<String> filters = new List<String>();
|
||||
|
||||
// Facility Id.
|
||||
String includedIds = prm.IncludedIds.Concat(",");
|
||||
if (!includedIds.IsEmpty())
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_Id, aliasFacility) + " IN (" + includedIds + ")");
|
||||
String excludedIds = prm.ExcludedIds.Concat(",");
|
||||
if (!excludedIds.IsEmpty())
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_Id, aliasFacility) + " NOT IN (" + excludedIds + ")");
|
||||
|
||||
// Applicable dates.
|
||||
DateTime nullDate = new DateTime(1970, 1, 1);
|
||||
String colApplicFrom = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_ApplicFrom, aliasFacility);
|
||||
String colApplicTo = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_ApplicTo, aliasFacility);
|
||||
if (DateUtil.IsValid(prm.Application))
|
||||
{
|
||||
// Looking for roles that are applicable on the specified date.
|
||||
filters.Add("(" + colApplicFrom + " IS NULL OR " + colApplicFrom + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicFrom + "<" + DbQuery.FormatDateForCondition(DateUtil.IncrementDate(prm.Application, 1)) + ")");
|
||||
filters.Add("(" + colApplicTo + " IS NULL OR " + colApplicTo + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicTo + ">=" + DbQuery.FormatDateForCondition(prm.Application) + ")");
|
||||
}
|
||||
else if (DateUtil.IsValid(prm.ApplicationFrom) || DateUtil.IsValid(prm.ApplicationTo))
|
||||
{
|
||||
// Looking for roles that overlap with the specified date range.
|
||||
if (DateUtil.IsValid(prm.ApplicationFrom) && DateUtil.IsValid(prm.ApplicationTo))
|
||||
{
|
||||
// Both from and to dates specified.
|
||||
filters.Add("(" + colApplicFrom + " IS NULL OR " + colApplicFrom + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicFrom + "<" + DbQuery.FormatDateForCondition(DateUtil.IncrementDate(prm.ApplicationTo, 1)) + ")");
|
||||
filters.Add("(" + colApplicTo + " IS NULL OR " + colApplicTo + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicTo + ">=" + DbQuery.FormatDateForCondition(prm.ApplicationFrom) + ")");
|
||||
}
|
||||
else if (DateUtil.IsValid(prm.ApplicationFrom))
|
||||
{
|
||||
// Only 'from' date specified - Matches with ApplicTo not specified or after 'from' date.
|
||||
filters.Add("(" + colApplicTo + " IS NULL OR " + colApplicTo + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicTo + ">=" + DbQuery.FormatDateForCondition(prm.ApplicationFrom) + ")");
|
||||
String filter = filters[0];
|
||||
}
|
||||
else if (DateUtil.IsValid(prm.ApplicationTo))
|
||||
{
|
||||
// Only 'to' date specified - Matches with ApplicFrom not specified or before 'to' date.
|
||||
filters.Add("(" + colApplicFrom + " IS NULL OR " + colApplicFrom + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicFrom + "<" + DbQuery.FormatDateForCondition(DateUtil.IncrementDate(prm.ApplicationTo, 1)) + ")");
|
||||
String filter = filters[0];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Common Properties.
|
||||
|
||||
if (filters.Count < 1) filters.Add("1=1");
|
||||
return filters;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Facility sort columns.
|
||||
public List<String> GetFacilitySortColumns(SpmFacility.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for Facility columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SpmDbDfn.GetTableForColumn((SpmDbDfn.ColumnIdx)columnDfn.DbColumn) == SpmDbDfn.TableIdx.SwmFacility)
|
||||
{
|
||||
sortCol = SpmDbDfn.GetColumnNameQual((SpmDbDfn.ColumnIdx)columnDfn.DbColumn, aliasFacility);
|
||||
}
|
||||
else
|
||||
{
|
||||
sortCol = columnDfn.DataName;
|
||||
if (!StringUtil.IsEmpty(columnDfn.SortDataName))
|
||||
sortCol = columnDfn.SortDataName;
|
||||
}
|
||||
if (!sortCol.IsEmpty())
|
||||
{
|
||||
DbOrderByNullMode orderByNullMode = DbOrderByNullMode.Default; // eSaOrderByDemoteNulls, eSaOrderByPromoteNulls
|
||||
sortColumnNames.Add(DbQuery.FormatForOrderBy(sortCol, columnDfn.SortAscending, orderByNullMode).Concat(", "));
|
||||
}
|
||||
}
|
||||
sortColumnNames.RemoveBlanks();
|
||||
if (sortColumnNames.IsEmpty())
|
||||
{
|
||||
// Default sort columns:
|
||||
//sortColumnNames.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_Type, aliasFacility) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Facility count.
|
||||
private long GetFacilityCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return db.GetRowCount(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmFacility) + " As " + aliasFacility, filter);
|
||||
}
|
||||
public override long GetFacilityCount(SpmFacility.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetFacilityCount(GetFacilityQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Facility list.
|
||||
public override List<SpmFacility> GetFacilityList(SpmFacility.Params prm)
|
||||
{
|
||||
List<SpmFacility> Facilityes = new List<SpmFacility>();
|
||||
DbQuery qry = new DbQuery(db.DbmsType);
|
||||
qry.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmFacility), aliasFacility);
|
||||
qry.Columns.AddRange(SwmFacility_Db.Fields);
|
||||
qry.Filters.AddRange(GetFacilityQueryFilter(prm));
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
dbCommand.CommandText = qry.BuildQuery();
|
||||
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
|
||||
{
|
||||
while (dbDataReader.Read())
|
||||
{
|
||||
SwmFacility_Db dbFacility = new SwmFacility_Db(DbInfo);
|
||||
dbFacility.PopulateFrom(dbDataReader);
|
||||
Facilityes.Add(CreateFacility(dbFacility));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Logger.Warn(GetType().Name + ".GetFacilityList\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return Facilityes;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Facility query execution.
|
||||
public override DbResultSet ExecuteFacilityQuery(List<ColumnDfn> columns, SpmFacility.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(db.DbmsType);
|
||||
query.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmFacility), aliasFacility);
|
||||
|
||||
// Facility Properties - add columns as defined in query list.
|
||||
if (columns.HasId((int)SpmFacility.Column.Id))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_Id, aliasFacility));
|
||||
if (columns.HasId((int)SpmFacility.Column.DepartmentId))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_DepartmentId, aliasFacility));
|
||||
if (columns.HasId((int)SpmFacility.Column.Type) || columns.HasId((int)SpmFacility.Column.Type_Desc))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_Type, aliasFacility));
|
||||
if (columns.HasId((int)SpmFacility.Column.Name))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_Name, aliasFacility));
|
||||
if (columns.HasId((int)SpmFacility.Column.SortCode))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_SortCode, aliasFacility));
|
||||
if (columns.HasId((int)SpmFacility.Column.Type))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_Type, aliasFacility));
|
||||
|
||||
// Common Properties
|
||||
if (columns.HasId((int)SpmFacility.Column.Notes))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_Notes, aliasFacility));
|
||||
if (columns.HasId((int)SpmFacility.Column.Status) || columns.HasId((int)SpmFacility.Column.Status_Desc) || columns.HasId((int)SpmFacility.Column.Status_Ind))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_Status, aliasFacility));
|
||||
if (columns.HasId((int)SpmFacility.Column.CreateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_CreateOn, aliasFacility));
|
||||
if (columns.HasId((int)SpmFacility.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_UpdateOn, aliasFacility));
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetFacilityQueryFilter(prm));
|
||||
|
||||
if (prm.IncludedIds.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetFacilitySortColumns(prm))
|
||||
query.OrderBy.Add(sortColumn);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
//return new DbResultSet_DataTableReader(db, query.BuildQuery());
|
||||
return new Sarand.Win.Dbas.Data.DbResultSet_DataReader(db, query.BuildQuery());
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
public override DataValue GetFacilityDataValue(ColumnDfn column, NamedValue.Map values)
|
||||
{
|
||||
DataValue value = new DataValue();
|
||||
switch ((SpmFacility.Column)column.Id)
|
||||
{
|
||||
// Notes.
|
||||
case SpmFacility.Column.Notes:
|
||||
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
|
||||
break;
|
||||
|
||||
// Status.
|
||||
case SpmFacility.Column.Status_Desc:
|
||||
case SpmFacility.Column.Status_Ind:
|
||||
{
|
||||
String statusCode = values.GetValue(column.DataName).ToString();
|
||||
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
|
||||
if (column.Id == (int)SpmFacility.Column.Status_Desc)
|
||||
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
|
||||
else if (column.Id == (int)SpmFacility.Column.Status_Ind)
|
||||
value = new DataValue(SpmFacility.GetStatusTriState(status));
|
||||
}
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
}
|
||||
return value;
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,509 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Sarand.Core.App;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.Win.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
using Sarand.PatientMgr.Win.Dbas.Bus;
|
||||
using Sarand.PatientMgr.Win.Dbas.Internal;
|
||||
//using Sarand.PatientMgr.Win.Dbas.UpdateLog;
|
||||
using Sarand.Win.Dbas.Data;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
internal partial class SpmDepartmentMgr_Dbas : SpmDepartmentMgr
|
||||
{
|
||||
//*******************************************************************
|
||||
// F a c i l i t y T e m p l a t e
|
||||
//*******************************************************************
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// FacilityTemplate exists.
|
||||
public override bool FacilityTemplateExistsById(SysId facilityTemplateId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(facilityTemplateId)) return false;
|
||||
SpmFacilityTemplate.Params prmFacilityTemplate = new SpmFacilityTemplate.Params();
|
||||
prmFacilityTemplate.IncludedIds.Add(facilityTemplateId);
|
||||
prmFacilityTemplate.StatusCat = SpmFacilityTemplate.StatusCat.Any;
|
||||
return GetFacilityTemplateCount(prmFacilityTemplate) == 1;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get FacilityTemplate.
|
||||
public override SpmFacilityTemplate GetFacilityTemplate(SpmFacilityTemplate.Params prm)
|
||||
{
|
||||
return GetFacilityTemplate(GetFacilityTemplateQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
private SpmFacilityTemplate GetFacilityTemplate(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetFacilityTemplateCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple FacilityTemplatees found");
|
||||
return null;
|
||||
}
|
||||
SpmFacilityTemplate facilityTemplate = null;
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmFacilityTemplate_Db dbFacilityTemplate = new SwmFacilityTemplate_Db(DbInfo);
|
||||
dbFacilityTemplate.PopulateFrom(dbCommand, aliasFacilityTemplate, filter);
|
||||
facilityTemplate = CreateFacilityTemplate(dbFacilityTemplate);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
Logger.Warn(GetType().Name + ".GetFacilityTemplate\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return facilityTemplate;
|
||||
}
|
||||
public override SpmFacilityTemplate GetFacilityTemplateById(SysId facilityTemplateId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(facilityTemplateId)) return null;
|
||||
SpmFacilityTemplate.Params prmFacilityTemplate = new SpmFacilityTemplate.Params();
|
||||
prmFacilityTemplate.IncludedIds.Add(facilityTemplateId);
|
||||
prmFacilityTemplate.StatusCat = SpmFacilityTemplate.StatusCat.Any;
|
||||
return GetFacilityTemplate(prmFacilityTemplate);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create FacilityTemplate.
|
||||
public override SpmFacilityTemplate CreateFacilityTemplate(SysId facilityId, Spm.ResourceCategory resourceCategory)
|
||||
{
|
||||
return new SpmFacilityTemplate_Dbas(UserContext, facilityId, resourceCategory, 0);
|
||||
}
|
||||
private SpmFacilityTemplate_Dbas CreateFacilityTemplate(SwmFacilityTemplate_Db dbFacilityTemplate)
|
||||
{
|
||||
ClearErrorState();
|
||||
SpmFacilityTemplate_Dbas facilityTemplate = new SpmFacilityTemplate_Dbas(UserContext, new SysId(dbFacilityTemplate._FacilityId), (Spm.ResourceCategory)dbFacilityTemplate._Category, (ushort)dbFacilityTemplate._Flags);
|
||||
PopulateFrom(dbFacilityTemplate, facilityTemplate);
|
||||
return facilityTemplate;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate FacilityTemplate.
|
||||
public override bool IsValidFacilityTemplateData(SpmFacilityTemplate.Data data, SpmFacilityTemplate.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidFacilityTemplateData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert FacilityTemplate.
|
||||
public override bool InsertFacilityTemplate(SpmFacilityTemplate facilityTemplate, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidFacilityTemplate(facilityTemplate)) return false;
|
||||
if (SysId.IsValid(facilityTemplate.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmFacilityTemplate_Db dbFacilityTemplate = new SwmFacilityTemplate_Db(DbInfo);
|
||||
PopulateTo(dbFacilityTemplate, facilityTemplate, dbUpdateInfo);
|
||||
if (SwmFacilityTemplate_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbFacilityTemplate._Id = SysId.ToInt(db.GetNextId("FacilityTemplate", dbUpdateInfo));
|
||||
}
|
||||
dbFacilityTemplate.ExecuteInsertCommand(dbCommand);
|
||||
facilityTemplate.Id = new SysId(dbFacilityTemplate._Id);
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update FacilityTemplate.
|
||||
public override bool UpdateFacilityTemplate(SpmFacilityTemplate facilityTemplate, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidFacilityTemplate(facilityTemplate)) return false;
|
||||
if (!SysId.IsValid(facilityTemplate.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve FacilityTemplate.
|
||||
dbConnection.Open();
|
||||
SwmFacilityTemplate_Db dbFacilityTemplate = new SwmFacilityTemplate_Db(DbInfo);
|
||||
dbFacilityTemplate.PopulateFrom(dbCommand, aliasFacilityTemplate, "Id=" + SysId.ToString(facilityTemplate.Id));
|
||||
//SpmUpdateLogItemMonitor_FacilityTemplate updateLogMonitor = new SpmUpdateLogItemMonitor_FacilityTemplate(UserContext, CreateFacilityTemplate(dbFacilityTemplate));
|
||||
|
||||
// Update properties.
|
||||
PopulateTo(dbFacilityTemplate, facilityTemplate, dbUpdateInfo);
|
||||
dbFacilityTemplate.ExecuteUpdateCommand(dbCommand);
|
||||
|
||||
/* Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(facilityTemplate);
|
||||
updateLogMonitor.LogUpdates();*/
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete FacilityTemplate.
|
||||
public override bool FacilityTemplateCanBeDeleted(SpmFacilityTemplate facilityTemplate)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.FacilityTemplateCanBeDeleted(facilityTemplate)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteFacilityTemplate(SpmFacilityTemplate facilityTemplate, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!FacilityTemplateCanBeDeleted(facilityTemplate)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve FacilityTemplate.
|
||||
dbConnection.Open();
|
||||
SwmFacilityTemplate_Db dbFacilityTemplate = new SwmFacilityTemplate_Db(DbInfo);
|
||||
dbFacilityTemplate.PopulateFrom(dbCommand, aliasFacilityTemplate, "Id=" + facilityTemplate.Id.ToString());
|
||||
// Delete FacilityTemplate.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmFacilityTemplate) + " WHERE Id=" + SysId.ToString(facilityTemplate.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(SwmFacilityTemplate_Db dbFacilityTemplate, SpmFacilityTemplate facilityTemplate, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbFacilityTemplate._Id = facilityTemplate.Id.ToInt();
|
||||
|
||||
dbFacilityTemplate._Notes = facilityTemplate.Notes;
|
||||
dbFacilityTemplate._Status = SacsSystem.GetStatusCode(facilityTemplate.Status);
|
||||
dbFacilityTemplate._Flags = (short)facilityTemplate.Flags;
|
||||
if (!SysId.IsValid(facilityTemplate.Id))
|
||||
{
|
||||
dbFacilityTemplate._CreateOn = DateTime.UtcNow;
|
||||
dbFacilityTemplate._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbFacilityTemplate._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbFacilityTemplate._UpdateOn = DateTime.UtcNow;
|
||||
dbFacilityTemplate._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbFacilityTemplate._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(SwmFacilityTemplate_Db dbFacilityTemplate, SpmFacilityTemplate facilityTemplate)
|
||||
{
|
||||
//facilityTemplate.Id = new SysId(dbFacilityTemplate._Id);
|
||||
facilityTemplate.Notes = dbFacilityTemplate._Notes;
|
||||
facilityTemplate.Status = SacsSystem.GetStatusForCode(dbFacilityTemplate._Status);
|
||||
facilityTemplate.SetCreateStamp(dbFacilityTemplate._CreateOn, new SysId(dbFacilityTemplate._CreateBy), dbFacilityTemplate._CreateHost);
|
||||
facilityTemplate.SetUpdateStamp(dbFacilityTemplate._UpdateOn, new SysId(dbFacilityTemplate._UpdateBy), dbFacilityTemplate._UpdateHost);
|
||||
facilityTemplate.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// FacilityTemplate column definitions.
|
||||
private static readonly String aliasFacilityTemplate = "aFacTemp";
|
||||
private void SetFacilityTemplateColDfn
|
||||
(ColumnDfn col, String caption, int width, SpmDbDfn.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SpmDbDfn.GetTableForColumn(dbCol) == SpmDbDfn.TableIdx.SwmFacilityTemplate)
|
||||
alias = aliasFacilityTemplate;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SpmDbDfn.GetColumnName(dbCol, false), SpmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SpmDbDfn.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SpmDbDfn.GetColTextLen(dbCol);
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
// Getting prmFacilityTemplate column definition.
|
||||
public override ColumnDfn GetFacilityTemplateColumnDfn(SpmFacilityTemplate.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
case SpmFacilityTemplate.Column.Pos:
|
||||
SetFacilityTemplateColDfn(columnDfn, "Pos", 42, SpmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SpmFacilityTemplate.Column.Id:
|
||||
SetFacilityTemplateColDfn(columnDfn, "Id", 40, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
// FacilityTemplate Properties.
|
||||
|
||||
// Derived properties.
|
||||
|
||||
// Common properties.
|
||||
case SpmFacilityTemplate.Column.Notes:
|
||||
SetFacilityTemplateColDfn(columnDfn, "Notes", 200, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Notes);
|
||||
break;
|
||||
case SpmFacilityTemplate.Column.Status:
|
||||
SetFacilityTemplateColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmFacilityTemplate.Column.Status_Desc:
|
||||
SetFacilityTemplateColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmFacilityTemplate.Column.Status_Ind:
|
||||
SetFacilityTemplateColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SpmFacilityTemplate.Column.CreateOn_Date:
|
||||
SetFacilityTemplateColDfn(columnDfn, "Created", 65, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SpmFacilityTemplate.Column.UpdateOn_Date:
|
||||
SetFacilityTemplateColDfn(columnDfn, "Updated", 65, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
}
|
||||
if (!String.IsNullOrEmpty(caption))
|
||||
columnDfn.Caption = caption;
|
||||
if (width > 0)
|
||||
columnDfn.Width = width;
|
||||
return columnDfn;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// FacilityTemplate query filter.
|
||||
public override List<string> GetFacilityTemplateQueryFilter(SpmFacilityTemplate.Params prm)
|
||||
{
|
||||
List<String> filters = new List<String>();
|
||||
|
||||
// FacilityTemplate Id.
|
||||
String includedIds = prm.IncludedIds.Concat(",");
|
||||
if (!includedIds.IsEmpty())
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Id, aliasFacilityTemplate) + " IN (" + includedIds + ")");
|
||||
String excludedIds = prm.ExcludedIds.Concat(",");
|
||||
if (!excludedIds.IsEmpty())
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Id, aliasFacilityTemplate) + " NOT IN (" + excludedIds + ")");
|
||||
|
||||
// Applicable dates.
|
||||
DateTime nullDate = new DateTime(1970, 1, 1);
|
||||
String colApplicFrom = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_ApplicFrom, aliasFacilityTemplate);
|
||||
String colApplicTo = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_ApplicTo, aliasFacilityTemplate);
|
||||
if (DateUtil.IsValid(prm.Application))
|
||||
{
|
||||
// Looking for roles that are applicable on the specified date.
|
||||
filters.Add("(" + colApplicFrom + " IS NULL OR " + colApplicFrom + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicFrom + "<" + DbQuery.FormatDateForCondition(DateUtil.IncrementDate(prm.Application, 1)) + ")");
|
||||
filters.Add("(" + colApplicTo + " IS NULL OR " + colApplicTo + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicTo + ">=" + DbQuery.FormatDateForCondition(prm.Application) + ")");
|
||||
}
|
||||
else if (DateUtil.IsValid(prm.ApplicationFrom) || DateUtil.IsValid(prm.ApplicationTo))
|
||||
{
|
||||
// Looking for roles that overlap with the specified date range.
|
||||
if (DateUtil.IsValid(prm.ApplicationFrom) && DateUtil.IsValid(prm.ApplicationTo))
|
||||
{
|
||||
// Both from and to dates specified.
|
||||
filters.Add("(" + colApplicFrom + " IS NULL OR " + colApplicFrom + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicFrom + "<" + DbQuery.FormatDateForCondition(DateUtil.IncrementDate(prm.ApplicationTo, 1)) + ")");
|
||||
filters.Add("(" + colApplicTo + " IS NULL OR " + colApplicTo + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicTo + ">=" + DbQuery.FormatDateForCondition(prm.ApplicationFrom) + ")");
|
||||
}
|
||||
else if (DateUtil.IsValid(prm.ApplicationFrom))
|
||||
{
|
||||
// Only 'from' date specified - Matches with ApplicTo not specified or after 'from' date.
|
||||
filters.Add("(" + colApplicTo + " IS NULL OR " + colApplicTo + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicTo + ">=" + DbQuery.FormatDateForCondition(prm.ApplicationFrom) + ")");
|
||||
String filter = filters[0];
|
||||
}
|
||||
else if (DateUtil.IsValid(prm.ApplicationTo))
|
||||
{
|
||||
// Only 'to' date specified - Matches with ApplicFrom not specified or before 'to' date.
|
||||
filters.Add("(" + colApplicFrom + " IS NULL OR " + colApplicFrom + "=" + DbQuery.FormatDateForCondition(nullDate) + " OR " + colApplicFrom + "<" + DbQuery.FormatDateForCondition(DateUtil.IncrementDate(prm.ApplicationTo, 1)) + ")");
|
||||
String filter = filters[0];
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Common Properties.
|
||||
|
||||
if (filters.Count < 1) filters.Add("1=1");
|
||||
return filters;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// FacilityTemplate sort columns.
|
||||
public List<String> GetFacilityTemplateSortColumns(SpmFacilityTemplate.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for FacilityTemplate columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SpmDbDfn.GetTableForColumn((SpmDbDfn.ColumnIdx)columnDfn.DbColumn) == SpmDbDfn.TableIdx.SwmFacilityTemplate)
|
||||
{
|
||||
sortCol = SpmDbDfn.GetColumnNameQual((SpmDbDfn.ColumnIdx)columnDfn.DbColumn, aliasFacilityTemplate);
|
||||
}
|
||||
else
|
||||
{
|
||||
sortCol = columnDfn.DataName;
|
||||
if (!StringUtil.IsEmpty(columnDfn.SortDataName))
|
||||
sortCol = columnDfn.SortDataName;
|
||||
}
|
||||
if (!sortCol.IsEmpty())
|
||||
{
|
||||
DbOrderByNullMode orderByNullMode = DbOrderByNullMode.Default; // eSaOrderByDemoteNulls, eSaOrderByPromoteNulls
|
||||
sortColumnNames.Add(DbQuery.FormatForOrderBy(sortCol, columnDfn.SortAscending, orderByNullMode).Concat(", "));
|
||||
}
|
||||
}
|
||||
sortColumnNames.RemoveBlanks();
|
||||
if (sortColumnNames.IsEmpty())
|
||||
{
|
||||
// Default sort columns:
|
||||
//sortColumnNames.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Type, aliasFacilityTemplate) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// FacilityTemplate count.
|
||||
private long GetFacilityTemplateCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return db.GetRowCount(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmFacilityTemplate) + " As " + aliasFacilityTemplate, filter);
|
||||
}
|
||||
public override long GetFacilityTemplateCount(SpmFacilityTemplate.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetFacilityTemplateCount(GetFacilityTemplateQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// FacilityTemplate list.
|
||||
public override List<SpmFacilityTemplate> GetFacilityTemplateList(SpmFacilityTemplate.Params prm)
|
||||
{
|
||||
List<SpmFacilityTemplate> FacilityTemplatees = new List<SpmFacilityTemplate>();
|
||||
DbQuery qry = new DbQuery(db.DbmsType);
|
||||
qry.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmFacilityTemplate), aliasFacilityTemplate);
|
||||
qry.Columns.AddRange(SwmFacilityTemplate_Db.Fields);
|
||||
qry.Filters.AddRange(GetFacilityTemplateQueryFilter(prm));
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
dbCommand.CommandText = qry.BuildQuery();
|
||||
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
|
||||
{
|
||||
while (dbDataReader.Read())
|
||||
{
|
||||
SwmFacilityTemplate_Db dbFacilityTemplate = new SwmFacilityTemplate_Db(DbInfo);
|
||||
dbFacilityTemplate.PopulateFrom(dbDataReader);
|
||||
FacilityTemplatees.Add(CreateFacilityTemplate(dbFacilityTemplate));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Logger.Warn(GetType().Name + ".GetFacilityTemplateList\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return FacilityTemplatees;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// FacilityTemplate query execution.
|
||||
public override DbResultSet ExecuteFacilityTemplateQuery(List<ColumnDfn> columns, SpmFacilityTemplate.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(db.DbmsType);
|
||||
query.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmFacilityTemplate), aliasFacilityTemplate);
|
||||
|
||||
// FacilityTemplate Properties - add columns as defined in query list.
|
||||
/*if (columns.HasId((int)SpmFacilityTemplate.Column.Id))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Id, aliasFacilityTemplate));*/
|
||||
|
||||
// Common Properties
|
||||
if (columns.HasId((int)SpmFacilityTemplate.Column.Notes))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Notes, aliasFacilityTemplate));
|
||||
if (columns.HasId((int)SpmFacilityTemplate.Column.Status) || columns.HasId((int)SpmFacilityTemplate.Column.Status_Desc) || columns.HasId((int)SpmFacilityTemplate.Column.Status_Ind))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Status, aliasFacilityTemplate));
|
||||
if (columns.HasId((int)SpmFacilityTemplate.Column.CreateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_CreateOn, aliasFacilityTemplate));
|
||||
if (columns.HasId((int)SpmFacilityTemplate.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_UpdateOn, aliasFacilityTemplate));
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetFacilityTemplateQueryFilter(prm));
|
||||
|
||||
if (prm.IncludedIds.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetFacilityTemplateSortColumns(prm))
|
||||
query.OrderBy.Add(sortColumn);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
//return new DbResultSet_DataTableReader(db, query.BuildQuery());
|
||||
return new Sarand.Win.Dbas.Data.DbResultSet_DataReader(db, query.BuildQuery());
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
public override DataValue GetFacilityTemplateDataValue(ColumnDfn column, NamedValue.Map values)
|
||||
{
|
||||
DataValue value = new DataValue();
|
||||
switch ((SpmFacilityTemplate.Column)column.Id)
|
||||
{
|
||||
// Notes.
|
||||
case SpmFacilityTemplate.Column.Notes:
|
||||
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
|
||||
break;
|
||||
|
||||
// Status.
|
||||
case SpmFacilityTemplate.Column.Status_Desc:
|
||||
case SpmFacilityTemplate.Column.Status_Ind:
|
||||
{
|
||||
String statusCode = values.GetValue(column.DataName).ToString();
|
||||
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
|
||||
if (column.Id == (int)SpmFacilityTemplate.Column.Status_Desc)
|
||||
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
|
||||
else if (column.Id == (int)SpmFacilityTemplate.Column.Status_Ind)
|
||||
value = new DataValue(SpmFacilityTemplate.GetStatusTriState(status));
|
||||
}
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
}
|
||||
return value;
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,594 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Sarand.Core.App;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.Win.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
using Sarand.PatientMgr.Win.Dbas.Bus;
|
||||
using Sarand.PatientMgr.Win.Dbas.Internal;
|
||||
//using Sarand.PatientMgr.Win.Dbas.UpdateLog;
|
||||
using Sarand.Win.Dbas.Data;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
internal partial class SpmDepartmentMgr_Dbas : SpmDepartmentMgr
|
||||
{
|
||||
//*******************************************************************
|
||||
// A d m i s s i o n A c t i o n
|
||||
//*******************************************************************
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Procedure exists.
|
||||
public override bool ProcedureExistsById(SysId procedureId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(procedureId)) return false;
|
||||
SpmProcedure.Params prmProcedure = new SpmProcedure.Params();
|
||||
prmProcedure.IncludedIds.Add(procedureId);
|
||||
prmProcedure.StatusCat = SpmProcedure.StatusCat.Any;
|
||||
return GetProcedureCount(prmProcedure) == 1;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get Procedure.
|
||||
public override SpmProcedure GetProcedure(SpmProcedure.Params prm)
|
||||
{
|
||||
return GetProcedure(GetProcedureQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
private SpmProcedure GetProcedure(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetProcedureCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple Procedurees found");
|
||||
return null;
|
||||
}
|
||||
SpmProcedure procedure = null;
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmProcedure_Db dbProcedure = new SwmProcedure_Db(DbInfo);
|
||||
dbProcedure.PopulateFrom(dbCommand, aliasProcedure, filter);
|
||||
procedure = CreateProcedure(dbProcedure);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
Logger.Warn(GetType().Name + ".GetProcedure\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return procedure;
|
||||
}
|
||||
public override SpmProcedure GetProcedureById(SysId procedureId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(procedureId)) return null;
|
||||
SpmProcedure.Params prmProcedure = new SpmProcedure.Params();
|
||||
prmProcedure.IncludedIds.Add(procedureId);
|
||||
prmProcedure.StatusCat = SpmProcedure.StatusCat.Any;
|
||||
return GetProcedure(prmProcedure);
|
||||
}
|
||||
public override SpmProcedure GetProcedureByCode(String operationCode)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!StringUtil.IsEmpty(operationCode)) return null;
|
||||
SpmProcedure.Params prmProcedure = new SpmProcedure.Params();
|
||||
prmProcedure.OperationCode = operationCode;
|
||||
prmProcedure.StatusCat = SpmProcedure.StatusCat.Any;
|
||||
return GetProcedure(prmProcedure);
|
||||
}
|
||||
public override SpmProcedure GetProcedureByOperationId(SysId operationId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(operationId)) return null;
|
||||
SpmProcedure.Params prmProcedure = new SpmProcedure.Params();
|
||||
prmProcedure.IncludedIds.Add(operationId);
|
||||
prmProcedure.OperationId = operationId;
|
||||
prmProcedure.StatusCat = SpmProcedure.StatusCat.Any;
|
||||
return GetProcedure(prmProcedure);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create Procedure.
|
||||
public override SpmProcedure CreateProcedure(SysId procedureId, SysId departmentId)
|
||||
{
|
||||
return new SpmProcedure_Dbas(UserContext, procedureId, departmentId, 0);
|
||||
}
|
||||
private SpmProcedure_Dbas CreateProcedure(SwmProcedure_Db dbProcedure)
|
||||
{
|
||||
ClearErrorState();
|
||||
SpmProcedure_Dbas procedure = new SpmProcedure_Dbas(UserContext, new SysId(dbProcedure._Id), new SysId(dbProcedure._DepartmentId), (ushort)dbProcedure._Flags);
|
||||
PopulateFrom(dbProcedure, procedure);
|
||||
return procedure;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate Procedure.
|
||||
public override bool IsValidProcedureData(SpmProcedure.Data data, SpmProcedure.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidProcedureData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert Procedure.
|
||||
public override bool InsertProcedure(SpmProcedure procedure, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidProcedure(procedure)) return false;
|
||||
if (SysId.IsValid(procedure.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmProcedure_Db dbProcedure = new SwmProcedure_Db(DbInfo);
|
||||
PopulateTo(dbProcedure, procedure, dbUpdateInfo);
|
||||
if (SwmProcedure_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbProcedure._Id = SysId.ToInt(db.GetNextId("Procedure", dbUpdateInfo));
|
||||
}
|
||||
dbProcedure.ExecuteInsertCommand(dbCommand);
|
||||
procedure.Id = new SysId(dbProcedure._Id);
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update Procedure.
|
||||
public override bool UpdateProcedure(SpmProcedure procedure, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidProcedure(procedure)) return false;
|
||||
if (!SysId.IsValid(procedure.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve Procedure.
|
||||
dbConnection.Open();
|
||||
SwmProcedure_Db dbProcedure = new SwmProcedure_Db(DbInfo);
|
||||
dbProcedure.PopulateFrom(dbCommand, aliasProcedure, "Id=" + SysId.ToString(procedure.Id));
|
||||
//SpmUpdateLogItemMonitor_Procedure updateLogMonitor = new SpmUpdateLogItemMonitor_Procedure(UserContext, CreateProcedure(dbProcedure));
|
||||
|
||||
// Update properties.
|
||||
PopulateTo(dbProcedure, procedure, dbUpdateInfo);
|
||||
dbProcedure.ExecuteUpdateCommand(dbCommand);
|
||||
|
||||
/* Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(procedure);
|
||||
updateLogMonitor.LogUpdates();*/
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete Procedure.
|
||||
public override bool ProcedureCanBeDeleted(SpmProcedure procedure)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.ProcedureCanBeDeleted(procedure)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteProcedure(SpmProcedure procedure, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!ProcedureCanBeDeleted(procedure)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve Procedure.
|
||||
dbConnection.Open();
|
||||
SwmProcedure_Db dbProcedure = new SwmProcedure_Db(DbInfo);
|
||||
dbProcedure.PopulateFrom(dbCommand, aliasProcedure, "Id=" + procedure.Id.ToString());
|
||||
// Delete Procedure.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmProcedure) + " WHERE Id=" + SysId.ToString(procedure.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(SwmProcedure_Db dbProcedure, SpmProcedure procedure, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbProcedure._Id = procedure.Id.ToInt();
|
||||
dbProcedure._OperationId = procedure.OperationId.ToInt();
|
||||
dbProcedure._OpnCode = procedure.OperationCode;
|
||||
dbProcedure._Description = procedure.Description;
|
||||
dbProcedure._ComplexityCode = procedure.ComplexityCode;
|
||||
dbProcedure._SpecialityCode = procedure.SpecialityCode;
|
||||
dbProcedure._Duration = procedure.Duration;
|
||||
dbProcedure._Duration_Training = procedure.DurationTraining;
|
||||
dbProcedure._Units = (float)procedure.Units;
|
||||
dbProcedure._Units_Training = (float)procedure.UnitsTraining;
|
||||
|
||||
dbProcedure._Notes = procedure.Notes;
|
||||
dbProcedure._Status = SacsSystem.GetStatusCode(procedure.Status);
|
||||
dbProcedure._Flags = (short)procedure.Flags;
|
||||
if (!SysId.IsValid(procedure.Id))
|
||||
{
|
||||
dbProcedure._CreateOn = DateTime.UtcNow;
|
||||
dbProcedure._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbProcedure._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbProcedure._UpdateOn = DateTime.UtcNow;
|
||||
dbProcedure._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbProcedure._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(SwmProcedure_Db dbProcedure, SpmProcedure procedure)
|
||||
{
|
||||
procedure.Id = new SysId(dbProcedure._Id);
|
||||
procedure.OperationId = new SysId(dbProcedure._OperationId);
|
||||
procedure.OperationCode = dbProcedure._OpnCode;
|
||||
procedure.Description = dbProcedure._Description;
|
||||
procedure.ComplexityCode = dbProcedure._ComplexityCode;
|
||||
procedure.SpecialityCode = dbProcedure._SpecialityCode;
|
||||
procedure.Duration = dbProcedure._Duration;
|
||||
procedure.DurationTraining = dbProcedure._Duration_Training;
|
||||
procedure.Units = (decimal)dbProcedure._Units;
|
||||
procedure.UnitsTraining = (decimal)dbProcedure._Units_Training;
|
||||
|
||||
procedure.Notes = dbProcedure._Notes;
|
||||
procedure.Status = SacsSystem.GetStatusForCode(dbProcedure._Status);
|
||||
procedure.SetCreateStamp(dbProcedure._CreateOn, new SysId(dbProcedure._CreateBy), dbProcedure._CreateHost);
|
||||
procedure.SetUpdateStamp(dbProcedure._UpdateOn, new SysId(dbProcedure._UpdateBy), dbProcedure._UpdateHost);
|
||||
procedure.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Procedure column definitions.
|
||||
private static readonly String aliasProcedure = "aProc";
|
||||
private void SetProcedureColDfn
|
||||
(ColumnDfn col, String caption, int width, SpmDbDfn.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SpmDbDfn.GetTableForColumn(dbCol) == SpmDbDfn.TableIdx.SwmProcedure)
|
||||
alias = aliasProcedure;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SpmDbDfn.GetColumnName(dbCol, false), SpmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SpmDbDfn.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SpmDbDfn.GetColTextLen(dbCol);
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
// Getting prmProcedure column definition.
|
||||
public override ColumnDfn GetProcedureColumnDfn(SpmProcedure.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
case SpmProcedure.Column.Pos:
|
||||
SetProcedureColDfn(columnDfn, "Pos", 42, SpmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SpmProcedure.Column.Id:
|
||||
SetProcedureColDfn(columnDfn, "Id", 40, SpmDbDfn.ColumnIdx.SwmProcedure_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
// Procedure Properties.
|
||||
case SpmProcedure.Column.DepartmentId:
|
||||
SetFacilityColDfn(columnDfn, "DepartmentId", 45, SpmDbDfn.ColumnIdx.SwmProcedure_DepartmentId, ColumnAlignment.Right);
|
||||
break;
|
||||
case SpmProcedure.Column.OperationId:
|
||||
SetProcedureColDfn(columnDfn, "OperationId", 45, SpmDbDfn.ColumnIdx.SwmProcedure_OperationId, ColumnAlignment.Right);
|
||||
break;
|
||||
case SpmProcedure.Column.Description:
|
||||
SetProcedureColDfn(columnDfn, "Description", 60, SpmDbDfn.ColumnIdx.SwmProcedure_Description, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
case SpmProcedure.Column.SpecialityCode:
|
||||
SetProcedureColDfn(columnDfn, "SpecialityCode", 60, SpmDbDfn.ColumnIdx.SwmProcedure_SpecialityCode, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
case SpmProcedure.Column.ComplexityCode:
|
||||
SetProcedureColDfn(columnDfn, "ComplexityCode", 60, SpmDbDfn.ColumnIdx.SwmProcedure_ComplexityCode, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
case SpmProcedure.Column.Duration:
|
||||
SetProcedureColDfn(columnDfn, "Duration", 45, SpmDbDfn.ColumnIdx.SwmProcedure_Duration, ColumnAlignment.Right);
|
||||
break;
|
||||
case SpmProcedure.Column.Duration_Training:
|
||||
SetProcedureColDfn(columnDfn, "DurationTraining", 45, SpmDbDfn.ColumnIdx.SwmProcedure_Duration_Training, ColumnAlignment.Right);
|
||||
break;
|
||||
case SpmProcedure.Column.Units:
|
||||
SetProcedureColDfn(columnDfn, "Units", 45, SpmDbDfn.ColumnIdx.SwmProcedure_Units, ColumnAlignment.Right);
|
||||
break;
|
||||
case SpmProcedure.Column.Units_Training:
|
||||
SetProcedureColDfn(columnDfn, "UnitsTraining", 45, SpmDbDfn.ColumnIdx.SwmProcedure_Units_Training, ColumnAlignment.Right);
|
||||
break;
|
||||
|
||||
// Common properties.
|
||||
case SpmProcedure.Column.Notes:
|
||||
SetProcedureColDfn(columnDfn, "Notes", 200, SpmDbDfn.ColumnIdx.SwmProcedure_Notes);
|
||||
break;
|
||||
case SpmProcedure.Column.Status:
|
||||
SetProcedureColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmProcedure_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmProcedure.Column.Status_Desc:
|
||||
SetProcedureColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmProcedure_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmProcedure.Column.Status_Ind:
|
||||
SetProcedureColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmProcedure_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SpmProcedure.Column.CreateOn_Date:
|
||||
SetProcedureColDfn(columnDfn, "Created", 65, SpmDbDfn.ColumnIdx.SwmProcedure_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SpmProcedure.Column.UpdateOn_Date:
|
||||
SetProcedureColDfn(columnDfn, "Updated", 65, SpmDbDfn.ColumnIdx.SwmProcedure_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
}
|
||||
if (!String.IsNullOrEmpty(caption))
|
||||
columnDfn.Caption = caption;
|
||||
if (width > 0)
|
||||
columnDfn.Width = width;
|
||||
return columnDfn;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Procedure query filter.
|
||||
public override List<string> GetProcedureQueryFilter(SpmProcedure.Params prm)
|
||||
{
|
||||
List<String> filters = new List<String>();
|
||||
|
||||
// Procedure Id.
|
||||
String includedIds = prm.IncludedIds.Concat(",");
|
||||
if (!includedIds.IsEmpty())
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmProcedure_Id, aliasProcedure) + " IN (" + includedIds + ")");
|
||||
String excludedIds = prm.ExcludedIds.Concat(",");
|
||||
if (!excludedIds.IsEmpty())
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmProcedure_Id, aliasProcedure) + " NOT IN (" + excludedIds + ")");
|
||||
|
||||
// Operation Id.
|
||||
if (SysId.IsValid(prm.OperationId))
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmProcedure_OperationId, aliasProcedure) + "=" + prm.OperationId.ToString());
|
||||
|
||||
// Operation Code.
|
||||
String operationCode = DbQuery.FormatForCondition(prm.OperationCode);
|
||||
if (!StringUtil.IsEmpty(operationCode))
|
||||
{
|
||||
String colOperationCode = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmProcedure_OpnCode, aliasProcedure);
|
||||
filters.Add(DbQuery.FormatFn_Left(colOperationCode, prm.OperationCode.Length) + "='" + operationCode + "'");
|
||||
}
|
||||
|
||||
// Description.
|
||||
String description = DbQuery.FormatForCondition(prm.Description);
|
||||
if (!StringUtil.IsEmpty(description))
|
||||
{
|
||||
String colDescription = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmProcedure_Description, aliasProcedure);
|
||||
// Build filter condition on description.
|
||||
List<String> filtersDesc = new List<String>();
|
||||
filtersDesc.Add(DbQuery.FormatFn_Left(colDescription, prm.Description.Length) + "='" + description + "'");
|
||||
|
||||
// Split description into space delimited words (to allow any combination within the description).
|
||||
List<String> descWord = description.Split(' ').ToList();
|
||||
filtersDesc.Add("(" + descWord.Concat(" AND ", colDescription + " LIKE '%", "%'") + ")");
|
||||
filters.Add(filtersDesc.Concat(" OR "));
|
||||
}
|
||||
|
||||
// Speciality code.
|
||||
String colSpecialityCode = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmProcedure_SpecialityCode, aliasProcedure);
|
||||
if (!StringUtil.IsEmpty(prm.SpecialityCode))
|
||||
filters.Add(colSpecialityCode + "='" + prm.SpecialityCode + "'");
|
||||
|
||||
// Complexity code.
|
||||
String colComplexityCode = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmProcedure_ComplexityCode, aliasProcedure);
|
||||
if (!StringUtil.IsEmpty(prm.ComplexityCode))
|
||||
filters.Add(colComplexityCode + "='" + prm.ComplexityCode + "'");
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Common Properties.
|
||||
|
||||
if (filters.Count < 1) filters.Add("1=1");
|
||||
return filters;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Procedure sort columns.
|
||||
public List<String> GetProcedureSortColumns(SpmProcedure.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for Procedure columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SpmDbDfn.GetTableForColumn((SpmDbDfn.ColumnIdx)columnDfn.DbColumn) == SpmDbDfn.TableIdx.SwmProcedure)
|
||||
{
|
||||
sortCol = SpmDbDfn.GetColumnNameQual((SpmDbDfn.ColumnIdx)columnDfn.DbColumn, aliasProcedure);
|
||||
}
|
||||
else
|
||||
{
|
||||
sortCol = columnDfn.DataName;
|
||||
if (!StringUtil.IsEmpty(columnDfn.SortDataName))
|
||||
sortCol = columnDfn.SortDataName;
|
||||
}
|
||||
if (!sortCol.IsEmpty())
|
||||
{
|
||||
DbOrderByNullMode orderByNullMode = DbOrderByNullMode.Default; // eSaOrderByDemoteNulls, eSaOrderByPromoteNulls
|
||||
sortColumnNames.Add(DbQuery.FormatForOrderBy(sortCol, columnDfn.SortAscending, orderByNullMode).Concat(", "));
|
||||
}
|
||||
}
|
||||
sortColumnNames.RemoveBlanks();
|
||||
if (sortColumnNames.IsEmpty())
|
||||
{
|
||||
// Default sort columns:
|
||||
//sortColumnNames.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmProcedure_Type, aliasProcedure) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Procedure count.
|
||||
private long GetProcedureCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return db.GetRowCount(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmProcedure) + " As " + aliasProcedure, filter);
|
||||
}
|
||||
public override long GetProcedureCount(SpmProcedure.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetProcedureCount(GetProcedureQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Procedure list.
|
||||
public override List<SpmProcedure> GetProcedureList(SpmProcedure.Params prm)
|
||||
{
|
||||
List<SpmProcedure> Procedurees = new List<SpmProcedure>();
|
||||
DbQuery qry = new DbQuery(db.DbmsType);
|
||||
qry.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmProcedure), aliasProcedure);
|
||||
qry.Columns.AddRange(SwmProcedure_Db.Fields);
|
||||
qry.Filters.AddRange(GetProcedureQueryFilter(prm));
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
dbCommand.CommandText = qry.BuildQuery();
|
||||
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
|
||||
{
|
||||
while (dbDataReader.Read())
|
||||
{
|
||||
SwmProcedure_Db dbProcedure = new SwmProcedure_Db(DbInfo);
|
||||
dbProcedure.PopulateFrom(dbDataReader);
|
||||
Procedurees.Add(CreateProcedure(dbProcedure));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Logger.Warn(GetType().Name + ".GetProcedureList\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return Procedurees;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Procedure query execution.
|
||||
public override DbResultSet ExecuteProcedureQuery(List<ColumnDfn> columns, SpmProcedure.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(db.DbmsType);
|
||||
query.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmProcedure), aliasProcedure);
|
||||
|
||||
// Procedure Properties - add columns as defined in query list.
|
||||
if (columns.HasId((int)SpmProcedure.Column.Id))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmProcedure_Id, aliasProcedure));
|
||||
if (columns.HasId((int)SpmProcedure.Column.DepartmentId))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmProcedure_DepartmentId, aliasProcedure));
|
||||
if (columns.HasId((int)SpmProcedure.Column.OperationId))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmProcedure_OperationId, aliasProcedure));
|
||||
if (columns.HasId((int)SpmProcedure.Column.Description))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmProcedure_Description, aliasProcedure));
|
||||
if (columns.HasId((int)SpmProcedure.Column.SpecialityCode))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmProcedure_SpecialityCode, aliasProcedure));
|
||||
if (columns.HasId((int)SpmProcedure.Column.ComplexityCode))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmProcedure_ComplexityCode, aliasProcedure));
|
||||
if (columns.HasId((int)SpmProcedure.Column.Duration))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmProcedure_Duration, aliasProcedure));
|
||||
if (columns.HasId((int)SpmProcedure.Column.Duration_Training))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmProcedure_Duration_Training, aliasProcedure));
|
||||
if (columns.HasId((int)SpmProcedure.Column.Units))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmProcedure_Units, aliasProcedure));
|
||||
if (columns.HasId((int)SpmProcedure.Column.Units_Training))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmProcedure_Units_Training, aliasProcedure));
|
||||
|
||||
// Common Properties
|
||||
if (columns.HasId((int)SpmProcedure.Column.Notes))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmProcedure_Notes, aliasProcedure));
|
||||
if (columns.HasId((int)SpmProcedure.Column.Status) || columns.HasId((int)SpmProcedure.Column.Status_Desc) || columns.HasId((int)SpmProcedure.Column.Status_Ind))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmProcedure_Status, aliasProcedure));
|
||||
if (columns.HasId((int)SpmProcedure.Column.CreateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmProcedure_CreateOn, aliasProcedure));
|
||||
if (columns.HasId((int)SpmProcedure.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmProcedure_UpdateOn, aliasProcedure));
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetProcedureQueryFilter(prm));
|
||||
|
||||
if (prm.IncludedIds.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetProcedureSortColumns(prm))
|
||||
query.OrderBy.Add(sortColumn);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
//return new DbResultSet_DataTableReader(db, query.BuildQuery());
|
||||
return new Sarand.Win.Dbas.Data.DbResultSet_DataReader(db, query.BuildQuery());
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
public override DataValue GetProcedureDataValue(ColumnDfn column, NamedValue.Map values)
|
||||
{
|
||||
DataValue value = new DataValue();
|
||||
switch ((SpmProcedure.Column)column.Id)
|
||||
{
|
||||
// Notes.
|
||||
case SpmProcedure.Column.Notes:
|
||||
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
|
||||
break;
|
||||
|
||||
// Status.
|
||||
case SpmProcedure.Column.Status_Desc:
|
||||
case SpmProcedure.Column.Status_Ind:
|
||||
{
|
||||
String statusCode = values.GetValue(column.DataName).ToString();
|
||||
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
|
||||
if (column.Id == (int)SpmProcedure.Column.Status_Desc)
|
||||
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
|
||||
else if (column.Id == (int)SpmProcedure.Column.Status_Ind)
|
||||
value = new DataValue(SpmProcedure.GetStatusTriState(status));
|
||||
}
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
}
|
||||
return value;
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,476 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Sarand.Core.App;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.Win.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
using Sarand.PatientMgr.Win.Dbas.Bus;
|
||||
using Sarand.PatientMgr.Win.Dbas.Internal;
|
||||
//using Sarand.PatientMgr.Win.Dbas.UpdateLog;
|
||||
using Sarand.Win.Dbas.Data;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
internal partial class SpmDepartmentMgr_Dbas : SpmDepartmentMgr
|
||||
{
|
||||
//*******************************************************************
|
||||
// A d m i s s i o n A c t i o n
|
||||
//*******************************************************************
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// TemplateData exists.
|
||||
public override bool TemplateDataExistsById(SysId templateDataId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(templateDataId)) return false;
|
||||
SpmTemplateData.Params prmTemplateData = new SpmTemplateData.Params();
|
||||
prmTemplateData.IncludedIds.Add(templateDataId);
|
||||
prmTemplateData.StatusCat = SpmTemplateData.StatusCat.Any;
|
||||
return GetTemplateDataCount(prmTemplateData) == 1;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get TemplateData.
|
||||
public override SpmTemplateData GetTemplateData(SpmTemplateData.Params prm)
|
||||
{
|
||||
return GetTemplateData(GetTemplateDataQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
private SpmTemplateData GetTemplateData(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetTemplateDataCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple TemplateDataes found");
|
||||
return null;
|
||||
}
|
||||
SpmTemplateData templateData = null;
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmTemplateData_Db dbTemplateData = new SwmTemplateData_Db(DbInfo);
|
||||
dbTemplateData.PopulateFrom(dbCommand, aliasTemplateData, filter);
|
||||
templateData = CreateTemplateData(dbTemplateData);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
Logger.Warn(GetType().Name + ".GetTemplateData\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return templateData;
|
||||
}
|
||||
public override SpmTemplateData GetTemplateDataById(SysId templateDataId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(templateDataId)) return null;
|
||||
SpmTemplateData.Params prmTemplateData = new SpmTemplateData.Params();
|
||||
prmTemplateData.IncludedIds.Add(templateDataId);
|
||||
prmTemplateData.StatusCat = SpmTemplateData.StatusCat.Any;
|
||||
return GetTemplateData(prmTemplateData);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create TemplateData.
|
||||
public override SpmTemplateData CreateTemplateData()
|
||||
{
|
||||
return new SpmTemplateData_Dbas(UserContext, null, 0);
|
||||
}
|
||||
private SpmTemplateData_Dbas CreateTemplateData(SwmTemplateData_Db dbTemplateData)
|
||||
{
|
||||
ClearErrorState();
|
||||
SpmTemplateData_Dbas templateData = new SpmTemplateData_Dbas(UserContext, new SysId(0), (ushort)dbTemplateData._Flags);
|
||||
PopulateFrom(dbTemplateData, templateData);
|
||||
return templateData;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate TemplateData.
|
||||
public override bool IsValidTemplateDataData(SpmTemplateData.Data data, SpmTemplateData.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidTemplateDataData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert TemplateData.
|
||||
public override bool InsertTemplateData(SpmTemplateData templateData, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidTemplateData(templateData)) return false;
|
||||
if (SysId.IsValid(templateData.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmTemplateData_Db dbTemplateData = new SwmTemplateData_Db(DbInfo);
|
||||
PopulateTo(dbTemplateData, templateData, dbUpdateInfo);
|
||||
if (SwmTemplateData_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
//dbTemplateData._Id = SysId.ToInt(db.GetNextId("TemplateData", dbUpdateInfo));
|
||||
}
|
||||
dbTemplateData.ExecuteInsertCommand(dbCommand);
|
||||
//templateData.Id = new SysId(dbTemplateData._Id);
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update TemplateData.
|
||||
public override bool UpdateTemplateData(SpmTemplateData templateData, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidTemplateData(templateData)) return false;
|
||||
if (!SysId.IsValid(templateData.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve TemplateData.
|
||||
dbConnection.Open();
|
||||
SwmTemplateData_Db dbTemplateData = new SwmTemplateData_Db(DbInfo);
|
||||
dbTemplateData.PopulateFrom(dbCommand, aliasTemplateData, "Id=" + SysId.ToString(templateData.Id));
|
||||
//SpmUpdateLogItemMonitor_TemplateData updateLogMonitor = new SpmUpdateLogItemMonitor_TemplateData(UserContext, CreateTemplateData(dbTemplateData));
|
||||
|
||||
// Update properties.
|
||||
PopulateTo(dbTemplateData, templateData, dbUpdateInfo);
|
||||
dbTemplateData.ExecuteUpdateCommand(dbCommand);
|
||||
|
||||
/* Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(templateData);
|
||||
updateLogMonitor.LogUpdates();*/
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete TemplateData.
|
||||
public override bool TemplateDataCanBeDeleted(SpmTemplateData templateData)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.TemplateDataCanBeDeleted(templateData)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteTemplateData(SpmTemplateData templateData, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!TemplateDataCanBeDeleted(templateData)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve TemplateData.
|
||||
dbConnection.Open();
|
||||
SwmTemplateData_Db dbTemplateData = new SwmTemplateData_Db(DbInfo);
|
||||
dbTemplateData.PopulateFrom(dbCommand, aliasTemplateData, "Id=" + templateData.Id.ToString());
|
||||
// Delete TemplateData.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmTemplateData) + " WHERE Id=" + SysId.ToString(templateData.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(SwmTemplateData_Db dbTemplateData, SpmTemplateData templateData, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
//dbTemplateData._Id = templateData.Id.ToInt();
|
||||
|
||||
dbTemplateData._Notes = templateData.Notes;
|
||||
dbTemplateData._Status = SacsSystem.GetStatusCode(templateData.Status);
|
||||
dbTemplateData._Flags = (short)templateData.Flags;
|
||||
if (!SysId.IsValid(templateData.Id))
|
||||
{
|
||||
dbTemplateData._CreateOn = DateTime.UtcNow;
|
||||
dbTemplateData._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbTemplateData._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbTemplateData._UpdateOn = DateTime.UtcNow;
|
||||
dbTemplateData._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbTemplateData._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(SwmTemplateData_Db dbTemplateData, SpmTemplateData templateData)
|
||||
{
|
||||
//templateData.Id = new SysId(dbTemplateData._Id);
|
||||
templateData.Notes = dbTemplateData._Notes;
|
||||
templateData.Status = SacsSystem.GetStatusForCode(dbTemplateData._Status);
|
||||
templateData.SetCreateStamp(dbTemplateData._CreateOn, new SysId(dbTemplateData._CreateBy), dbTemplateData._CreateHost);
|
||||
templateData.SetUpdateStamp(dbTemplateData._UpdateOn, new SysId(dbTemplateData._UpdateBy), dbTemplateData._UpdateHost);
|
||||
templateData.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// TemplateData column definitions.
|
||||
private static readonly String aliasTemplateData = "aAdmAct";
|
||||
private void SetTemplateDataColDfn
|
||||
(ColumnDfn col, String caption, int width, SpmDbDfn.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SpmDbDfn.GetTableForColumn(dbCol) == SpmDbDfn.TableIdx.SwmTemplateData)
|
||||
alias = aliasTemplateData;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SpmDbDfn.GetColumnName(dbCol, false), SpmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SpmDbDfn.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SpmDbDfn.GetColTextLen(dbCol);
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
// Getting prmTemplateData column definition.
|
||||
public override ColumnDfn GetTemplateDataColumnDfn(SpmTemplateData.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
/*case SpmTemplateData.Column.Pos:
|
||||
SetTemplateDataColDfn(columnDfn, "Pos", 42, SpmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SpmTemplateData.Column.Id:
|
||||
SetTemplateDataColDfn(columnDfn, "Id", 40, SpmDbDfn.ColumnIdx.SwmTemplateData_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;*/
|
||||
|
||||
// TemplateData Properties.
|
||||
|
||||
// Derived properties.
|
||||
|
||||
// Common properties.
|
||||
case SpmTemplateData.Column.Notes:
|
||||
SetTemplateDataColDfn(columnDfn, "Notes", 200, SpmDbDfn.ColumnIdx.SwmTemplateData_Notes);
|
||||
break;
|
||||
case SpmTemplateData.Column.Status:
|
||||
SetTemplateDataColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmTemplateData_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmTemplateData.Column.Status_Desc:
|
||||
SetTemplateDataColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmTemplateData_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmTemplateData.Column.Status_Ind:
|
||||
SetTemplateDataColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmTemplateData_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SpmTemplateData.Column.CreateOn_Date:
|
||||
SetTemplateDataColDfn(columnDfn, "Created", 65, SpmDbDfn.ColumnIdx.SwmTemplateData_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SpmTemplateData.Column.UpdateOn_Date:
|
||||
SetTemplateDataColDfn(columnDfn, "Updated", 65, SpmDbDfn.ColumnIdx.SwmTemplateData_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
}
|
||||
if (!String.IsNullOrEmpty(caption))
|
||||
columnDfn.Caption = caption;
|
||||
if (width > 0)
|
||||
columnDfn.Width = width;
|
||||
return columnDfn;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// TemplateData query filter.
|
||||
public override List<string> GetTemplateDataQueryFilter(SpmTemplateData.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
|
||||
// TemplateData Id.
|
||||
String includedIds = prm.IncludedIds.Concat(",");
|
||||
/*if (!includedIds.IsEmpty())
|
||||
filter.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmTemplateData_Id, aliasTemplateData) + " IN (" + includedIds + ")");
|
||||
String excludedIds = prm.ExcludedIds.Concat(",");
|
||||
if (!excludedIds.IsEmpty())
|
||||
filter.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmTemplateData_Id, aliasTemplateData) + " NOT IN (" + excludedIds + ")");*/
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Common Properties.
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// TemplateData sort columns.
|
||||
public List<String> GetTemplateDataSortColumns(SpmTemplateData.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for TemplateData columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SpmDbDfn.GetTableForColumn((SpmDbDfn.ColumnIdx)columnDfn.DbColumn) == SpmDbDfn.TableIdx.SwmTemplateData)
|
||||
{
|
||||
sortCol = SpmDbDfn.GetColumnNameQual((SpmDbDfn.ColumnIdx)columnDfn.DbColumn, aliasTemplateData);
|
||||
}
|
||||
else
|
||||
{
|
||||
sortCol = columnDfn.DataName;
|
||||
if (!StringUtil.IsEmpty(columnDfn.SortDataName))
|
||||
sortCol = columnDfn.SortDataName;
|
||||
}
|
||||
if (!sortCol.IsEmpty())
|
||||
{
|
||||
DbOrderByNullMode orderByNullMode = DbOrderByNullMode.Default; // eSaOrderByDemoteNulls, eSaOrderByPromoteNulls
|
||||
sortColumnNames.Add(DbQuery.FormatForOrderBy(sortCol, columnDfn.SortAscending, orderByNullMode).Concat(", "));
|
||||
}
|
||||
}
|
||||
sortColumnNames.RemoveBlanks();
|
||||
if (sortColumnNames.IsEmpty())
|
||||
{
|
||||
// Default sort columns:
|
||||
//sortColumnNames.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmTemplateData_Type, aliasTemplateData) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// TemplateData count.
|
||||
private long GetTemplateDataCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return db.GetRowCount(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmTemplateData) + " As " + aliasTemplateData, filter);
|
||||
}
|
||||
public override long GetTemplateDataCount(SpmTemplateData.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetTemplateDataCount(GetTemplateDataQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// TemplateData list.
|
||||
public override List<SpmTemplateData> GetTemplateDataList(SpmTemplateData.Params prm)
|
||||
{
|
||||
List<SpmTemplateData> TemplateDataes = new List<SpmTemplateData>();
|
||||
DbQuery qry = new DbQuery(db.DbmsType);
|
||||
qry.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmTemplateData), aliasTemplateData);
|
||||
qry.Columns.AddRange(SwmTemplateData_Db.Fields);
|
||||
qry.Filters.AddRange(GetTemplateDataQueryFilter(prm));
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
dbCommand.CommandText = qry.BuildQuery();
|
||||
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
|
||||
{
|
||||
while (dbDataReader.Read())
|
||||
{
|
||||
SwmTemplateData_Db dbTemplateData = new SwmTemplateData_Db(DbInfo);
|
||||
dbTemplateData.PopulateFrom(dbDataReader);
|
||||
TemplateDataes.Add(CreateTemplateData(dbTemplateData));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Logger.Warn(GetType().Name + ".GetTemplateDataList\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return TemplateDataes;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// TemplateData query execution.
|
||||
public override DbResultSet ExecuteTemplateDataQuery(List<ColumnDfn> columns, SpmTemplateData.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(db.DbmsType);
|
||||
query.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmTemplateData), aliasTemplateData);
|
||||
|
||||
// TemplateData Properties - add columns as defined in query list.
|
||||
/*if (columns.HasId((int)SpmTemplateData.Column.Id))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmTemplateData_Id, aliasTemplateData));*/
|
||||
|
||||
// Common Properties
|
||||
if (columns.HasId((int)SpmTemplateData.Column.Notes))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmTemplateData_Notes, aliasTemplateData));
|
||||
if (columns.HasId((int)SpmTemplateData.Column.Status) || columns.HasId((int)SpmTemplateData.Column.Status_Desc) || columns.HasId((int)SpmTemplateData.Column.Status_Ind))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmTemplateData_Status, aliasTemplateData));
|
||||
if (columns.HasId((int)SpmTemplateData.Column.CreateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmTemplateData_CreateOn, aliasTemplateData));
|
||||
if (columns.HasId((int)SpmTemplateData.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmTemplateData_UpdateOn, aliasTemplateData));
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetTemplateDataQueryFilter(prm));
|
||||
|
||||
if (prm.IncludedIds.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetTemplateDataSortColumns(prm))
|
||||
query.OrderBy.Add(sortColumn);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
//return new DbResultSet_DataTableReader(db, query.BuildQuery());
|
||||
return new Sarand.Win.Dbas.Data.DbResultSet_DataReader(db, query.BuildQuery());
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
public override DataValue GetTemplateDataDataValue(ColumnDfn column, NamedValue.Map values)
|
||||
{
|
||||
DataValue value = new DataValue();
|
||||
switch ((SpmTemplateData.Column)column.Id)
|
||||
{
|
||||
// Notes.
|
||||
case SpmTemplateData.Column.Notes:
|
||||
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
|
||||
break;
|
||||
|
||||
// Status.
|
||||
case SpmTemplateData.Column.Status_Desc:
|
||||
case SpmTemplateData.Column.Status_Ind:
|
||||
{
|
||||
String statusCode = values.GetValue(column.DataName).ToString();
|
||||
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
|
||||
if (column.Id == (int)SpmTemplateData.Column.Status_Desc)
|
||||
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
|
||||
else if (column.Id == (int)SpmTemplateData.Column.Status_Ind)
|
||||
value = new DataValue(SpmTemplateData.GetStatusTriState(status));
|
||||
}
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
}
|
||||
return value;
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
using Sarand.PatientMgr.Win.Dbas.Data;
|
||||
using Sarand.Win.Dbas.Base;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
internal partial class SpmDepartmentMgr_Dbas : SpmDepartmentMgr
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private SacsDatabase db = null;
|
||||
private readonly SpmDbDataItem.DatabaseInfo dbInfo;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmDepartmentMgr_Dbas (SpmUserContext userContext) :
|
||||
base(userContext)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
protected ISacsDatabase Database { get { return db; } }
|
||||
protected SpmDbDataItem.DatabaseInfo DbInfo { get { return dbInfo; } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,541 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Sarand.Core.App;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.Win.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
using Sarand.PatientMgr.Win.Dbas.Bus;
|
||||
using Sarand.PatientMgr.Win.Dbas.Internal;
|
||||
//using Sarand.PatientMgr.Win.Dbas.UpdateLog;
|
||||
using Sarand.Win.Dbas.Data;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
internal partial class SpmInstitutionMgr_Dbas : SpmInstitutionMgr
|
||||
{
|
||||
//*******************************************************************
|
||||
// E m p l o y e e
|
||||
//*******************************************************************
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Employee exists.
|
||||
public override bool EmployeeExistsById(SysId employeeId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(employeeId)) return false;
|
||||
SpmEmployee.Params prmEmployee = new SpmEmployee.Params();
|
||||
prmEmployee.IncludedIds.Add(employeeId);
|
||||
prmEmployee.StatusCat = SpmEmployee.StatusCat.Any;
|
||||
return GetEmployeeCount(prmEmployee) == 1;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get Employee.
|
||||
public override SpmEmployee GetEmployee(SpmEmployee.Params prm)
|
||||
{
|
||||
return GetEmployee(GetEmployeeQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
private SpmEmployee GetEmployee(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetEmployeeCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple Employeees found");
|
||||
return null;
|
||||
}
|
||||
SpmEmployee employee = null;
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmEmployee_Db dbEmployee = new SwmEmployee_Db(DbInfo);
|
||||
dbEmployee.PopulateFrom(dbCommand, aliasEmployee, filter);
|
||||
employee = CreateEmployee(dbEmployee);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
Logger.Warn(GetType().Name + ".GetEmployee\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return employee;
|
||||
}
|
||||
public override SpmEmployee GetEmployeeById(SysId employeeId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(employeeId)) return null;
|
||||
SpmEmployee.Params prmEmployee = new SpmEmployee.Params();
|
||||
prmEmployee.IncludedIds.Add(employeeId);
|
||||
prmEmployee.StatusCat = SpmEmployee.StatusCat.Any;
|
||||
return GetEmployee(prmEmployee);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create Employee.
|
||||
public override SpmEmployee CreateEmployee(SysId id, SysId institutionId)
|
||||
{
|
||||
return new SpmEmployee_Dbas(UserContext, id, institutionId, 0);
|
||||
}
|
||||
private SpmEmployee_Dbas CreateEmployee(SwmEmployee_Db dbEmployee)
|
||||
{
|
||||
ClearErrorState();
|
||||
SpmEmployee_Dbas employee = new SpmEmployee_Dbas(UserContext, new SysId(dbEmployee._Id), new SysId(dbEmployee._InstitutionId), (ushort)dbEmployee._Flags);
|
||||
PopulateFrom(dbEmployee, employee);
|
||||
return employee;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate Employee.
|
||||
public override bool IsValidEmployeeData(SpmEmployee.Data data, SpmEmployee.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidEmployeeData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert Employee.
|
||||
public override bool InsertEmployee(SpmEmployee employee, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidEmployee(employee)) return false;
|
||||
if (SysId.IsValid(employee.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmEmployee_Db dbEmployee = new SwmEmployee_Db(DbInfo);
|
||||
PopulateTo(dbEmployee, employee, dbUpdateInfo);
|
||||
if (SwmEmployee_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbEmployee._Id = SysId.ToInt(db.GetNextId("Employee", dbUpdateInfo));
|
||||
}
|
||||
dbEmployee.ExecuteInsertCommand(dbCommand);
|
||||
employee.Id = new SysId(dbEmployee._Id);
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update Employee.
|
||||
public override bool UpdateEmployee(SpmEmployee employee, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidEmployee(employee)) return false;
|
||||
if (!SysId.IsValid(employee.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve Employee.
|
||||
dbConnection.Open();
|
||||
SwmEmployee_Db dbEmployee = new SwmEmployee_Db(DbInfo);
|
||||
dbEmployee.PopulateFrom(dbCommand, aliasEmployee, "Id=" + SysId.ToString(employee.Id));
|
||||
//SpmUpdateLogItemMonitor_Employee updateLogMonitor = new SpmUpdateLogItemMonitor_Employee(UserContext, CreateEmployee(dbEmployee));
|
||||
|
||||
// Update properties.
|
||||
PopulateTo(dbEmployee, employee, dbUpdateInfo);
|
||||
dbEmployee.ExecuteUpdateCommand(dbCommand);
|
||||
|
||||
/* Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(employee);
|
||||
updateLogMonitor.LogUpdates();*/
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete Employee.
|
||||
public override bool EmployeeCanBeDeleted(SpmEmployee employee)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.EmployeeCanBeDeleted(employee)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteEmployee(SpmEmployee employee, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!EmployeeCanBeDeleted(employee)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve Employee.
|
||||
dbConnection.Open();
|
||||
SwmEmployee_Db dbEmployee = new SwmEmployee_Db(DbInfo);
|
||||
dbEmployee.PopulateFrom(dbCommand, aliasEmployee, "Id=" + employee.Id.ToString());
|
||||
// Delete Employee.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmEmployee) + " WHERE Id=" + SysId.ToString(employee.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(SwmEmployee_Db dbEmployee, SpmEmployee employee, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbEmployee._Id = employee.Id.ToInt();
|
||||
dbEmployee._EmployeeNo = employee.EmployeeNo;
|
||||
dbEmployee._Code = employee.Code;
|
||||
dbEmployee._Initials = employee.Initials;
|
||||
dbEmployee._Title = employee.Title;
|
||||
dbEmployee._Surname = employee.Surname;
|
||||
dbEmployee._Forename = employee.Forename;
|
||||
|
||||
dbEmployee._Notes = employee.Notes;
|
||||
dbEmployee._Status = SacsSystem.GetStatusCode(employee.Status);
|
||||
dbEmployee._Flags = (short)employee.Flags;
|
||||
if (!SysId.IsValid(employee.Id))
|
||||
{
|
||||
dbEmployee._CreateOn = DateTime.UtcNow;
|
||||
dbEmployee._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbEmployee._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbEmployee._UpdateOn = DateTime.UtcNow;
|
||||
dbEmployee._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbEmployee._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(SwmEmployee_Db dbEmployee, SpmEmployee employee)
|
||||
{
|
||||
employee.Id = new SysId(dbEmployee._Id);
|
||||
employee.EmployeeNo = dbEmployee._EmployeeNo;
|
||||
employee.Code = dbEmployee._Code;
|
||||
employee.Initials = dbEmployee._Initials;
|
||||
employee.Title = dbEmployee._Title;
|
||||
employee.Surname = dbEmployee._Surname;
|
||||
employee.Forename = dbEmployee._Forename;
|
||||
|
||||
employee.Notes = dbEmployee._Notes;
|
||||
employee.Status = SacsSystem.GetStatusForCode(dbEmployee._Status);
|
||||
employee.SetCreateStamp(dbEmployee._CreateOn, new SysId(dbEmployee._CreateBy), dbEmployee._CreateHost);
|
||||
employee.SetUpdateStamp(dbEmployee._UpdateOn, new SysId(dbEmployee._UpdateBy), dbEmployee._UpdateHost);
|
||||
employee.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Employee column definitions.
|
||||
private static readonly String aliasEmployee = "aAdmAct";
|
||||
private void SetEmployeeColDfn
|
||||
(ColumnDfn col, String caption, int width, SpmDbDfn.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SpmDbDfn.GetTableForColumn(dbCol) == SpmDbDfn.TableIdx.SwmEmployee)
|
||||
alias = aliasEmployee;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SpmDbDfn.GetColumnName(dbCol, false), SpmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SpmDbDfn.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SpmDbDfn.GetColTextLen(dbCol);
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
// Getting prmEmployee column definition.
|
||||
public override ColumnDfn GetEmployeeColumnDfn(SpmEmployee.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
case SpmEmployee.Column.Pos:
|
||||
SetEmployeeColDfn(columnDfn, "Pos", 42, SpmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SpmEmployee.Column.Id:
|
||||
SetEmployeeColDfn(columnDfn, "Id", 40, SpmDbDfn.ColumnIdx.SwmEmployee_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
// Employee Properties.
|
||||
case SpmEmployee.Column.InstitutionId:
|
||||
SetEmployeeColDfn(columnDfn, "InstitutionId", 40, SpmDbDfn.ColumnIdx.SwmEmployee_InstitutionId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SpmEmployee.Column.EmployeeNo:
|
||||
SetEmployeeColDfn(columnDfn, "EmployeeNo", 60, SpmDbDfn.ColumnIdx.SwmEmployee_EmployeeNo, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
case SpmEmployee.Column.Code:
|
||||
SetEmployeeColDfn(columnDfn, "Code", 60, SpmDbDfn.ColumnIdx.SwmEmployee_Code, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
case SpmEmployee.Column.Initials:
|
||||
SetEmployeeColDfn(columnDfn, "Initials", 90, SpmDbDfn.ColumnIdx.SwmEmployee_Initials);
|
||||
break;
|
||||
case SpmEmployee.Column.Title:
|
||||
SetEmployeeColDfn(columnDfn, "Title", 90, SpmDbDfn.ColumnIdx.SwmEmployee_Title);
|
||||
break;
|
||||
case SpmEmployee.Column.Surname:
|
||||
SetEmployeeColDfn(columnDfn, "Surname", 90, SpmDbDfn.ColumnIdx.SwmEmployee_Surname);
|
||||
break;
|
||||
case SpmEmployee.Column.Forename:
|
||||
SetEmployeeColDfn(columnDfn, "Forename", 90, SpmDbDfn.ColumnIdx.SwmEmployee_Forename);
|
||||
break;
|
||||
|
||||
// Common properties.
|
||||
case SpmEmployee.Column.Notes:
|
||||
SetEmployeeColDfn(columnDfn, "Notes", 200, SpmDbDfn.ColumnIdx.SwmEmployee_Notes);
|
||||
break;
|
||||
case SpmEmployee.Column.Status:
|
||||
SetEmployeeColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmEmployee_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmEmployee.Column.Status_Desc:
|
||||
SetEmployeeColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmEmployee_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmEmployee.Column.Status_Ind:
|
||||
SetEmployeeColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmEmployee_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SpmEmployee.Column.CreateOn_Date:
|
||||
SetEmployeeColDfn(columnDfn, "Created", 65, SpmDbDfn.ColumnIdx.SwmEmployee_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SpmEmployee.Column.UpdateOn_Date:
|
||||
SetEmployeeColDfn(columnDfn, "Updated", 65, SpmDbDfn.ColumnIdx.SwmEmployee_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
}
|
||||
if (!String.IsNullOrEmpty(caption))
|
||||
columnDfn.Caption = caption;
|
||||
if (width > 0)
|
||||
columnDfn.Width = width;
|
||||
return columnDfn;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Employee query filter.
|
||||
public override List<string> GetEmployeeQueryFilter(SpmEmployee.Params prm)
|
||||
{
|
||||
List<String> filters = new List<String>();
|
||||
|
||||
// Employee Id.
|
||||
String includedIds = prm.IncludedIds.Concat(",");
|
||||
if (!includedIds.IsEmpty())
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployee_Id, aliasEmployee) + " IN (" + includedIds + ")");
|
||||
String excludedIds = prm.ExcludedIds.Concat(",");
|
||||
if (!excludedIds.IsEmpty())
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployee_Id, aliasEmployee) + " NOT IN (" + excludedIds + ")");
|
||||
|
||||
// Institution Id.
|
||||
String colInstitutionId = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmOperation_InstitutionId, aliasOperation);
|
||||
if (SysId.IsValid(prm.InstitutionId))
|
||||
filters.Add(colInstitutionId + "=" + prm.InstitutionId.ToString());
|
||||
|
||||
// Employee Number.
|
||||
String employeeNo = DbQuery.FormatForCondition(prm.EmployeeNo);
|
||||
String colEmployeeNo = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployee_EmployeeNo, aliasEmployee);
|
||||
if (!StringUtil.IsEmpty(employeeNo))
|
||||
filters.Add(DbQuery.FormatFn_Left(colEmployeeNo, employeeNo.Length) + "='" + employeeNo + "'");
|
||||
|
||||
// Code.
|
||||
String code = DbQuery.FormatForCondition(prm.Code);
|
||||
String sColCode = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployee_Code, aliasEmployee);
|
||||
if (!StringUtil.IsEmpty(code))
|
||||
filters.Add(DbQuery.FormatFn_Left(sColCode, code.Length) + "='" + code + "'");
|
||||
|
||||
// Partial name.
|
||||
String surname = DbQuery.FormatForCondition(prm.Surname);
|
||||
String sColName = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployee_Surname, aliasEmployee);
|
||||
if (!StringUtil.IsEmpty(surname))
|
||||
filters.Add(DbQuery.FormatFn_Left(sColName, surname.Length) + "='" + surname + "'");
|
||||
|
||||
if (filters.Count < 1) filters.Add("1=1");
|
||||
return filters;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Employee sort columns.
|
||||
public List<String> GetEmployeeSortColumns(SpmEmployee.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for Employee columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SpmDbDfn.GetTableForColumn((SpmDbDfn.ColumnIdx)columnDfn.DbColumn) == SpmDbDfn.TableIdx.SwmEmployee)
|
||||
{
|
||||
sortCol = SpmDbDfn.GetColumnNameQual((SpmDbDfn.ColumnIdx)columnDfn.DbColumn, aliasEmployee);
|
||||
}
|
||||
else
|
||||
{
|
||||
sortCol = columnDfn.DataName;
|
||||
if (!StringUtil.IsEmpty(columnDfn.SortDataName))
|
||||
sortCol = columnDfn.SortDataName;
|
||||
}
|
||||
if (!sortCol.IsEmpty())
|
||||
{
|
||||
DbOrderByNullMode orderByNullMode = DbOrderByNullMode.Default; // eSaOrderByDemoteNulls, eSaOrderByPromoteNulls
|
||||
sortColumnNames.Add(DbQuery.FormatForOrderBy(sortCol, columnDfn.SortAscending, orderByNullMode).Concat(", "));
|
||||
}
|
||||
}
|
||||
sortColumnNames.RemoveBlanks();
|
||||
if (sortColumnNames.IsEmpty())
|
||||
{
|
||||
// Default sort columns:
|
||||
//sortColumnNames.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployee_Type, aliasEmployee) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Employee count.
|
||||
private long GetEmployeeCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return db.GetRowCount(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmEmployee) + " As " + aliasEmployee, filter);
|
||||
}
|
||||
public override long GetEmployeeCount(SpmEmployee.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetEmployeeCount(GetEmployeeQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Employee list.
|
||||
public override List<SpmEmployee> GetEmployeeList(SpmEmployee.Params prm)
|
||||
{
|
||||
List<SpmEmployee> Employeees = new List<SpmEmployee>();
|
||||
DbQuery qry = new DbQuery(db.DbmsType);
|
||||
qry.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmEmployee), aliasEmployee);
|
||||
qry.Columns.AddRange(SwmEmployee_Db.Fields);
|
||||
qry.Filters.AddRange(GetEmployeeQueryFilter(prm));
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
dbCommand.CommandText = qry.BuildQuery();
|
||||
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
|
||||
{
|
||||
while (dbDataReader.Read())
|
||||
{
|
||||
SwmEmployee_Db dbEmployee = new SwmEmployee_Db(DbInfo);
|
||||
dbEmployee.PopulateFrom(dbDataReader);
|
||||
Employeees.Add(CreateEmployee(dbEmployee));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Logger.Warn(GetType().Name + ".GetEmployeeList\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return Employeees;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Employee query execution.
|
||||
public override DbResultSet ExecuteEmployeeQuery(List<ColumnDfn> columns, SpmEmployee.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(db.DbmsType);
|
||||
query.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmEmployee), aliasEmployee);
|
||||
|
||||
// Employee Properties - add columns as defined in query list.
|
||||
if (columns.HasId((int)SpmEmployee.Column.Id))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployee_Id, aliasEmployee));
|
||||
if (columns.HasId((int)SpmEmployee.Column.EmployeeNo))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployee_EmployeeNo, aliasEmployee));
|
||||
if (columns.HasId((int)SpmEmployee.Column.Code))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployee_Code, aliasEmployee));
|
||||
if (columns.HasId((int)SpmEmployee.Column.Initials))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployee_Initials, aliasEmployee));
|
||||
if (columns.HasId((int)SpmEmployee.Column.Title))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployee_Title, aliasEmployee));
|
||||
if (columns.HasId((int)SpmEmployee.Column.Forename))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployee_Forename, aliasEmployee));
|
||||
if (columns.HasId((int)SpmEmployee.Column.Surname))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployee_Surname, aliasEmployee));
|
||||
|
||||
// Common Properties
|
||||
if (columns.HasId((int)SpmEmployee.Column.Notes))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployee_Notes, aliasEmployee));
|
||||
if (columns.HasId((int)SpmEmployee.Column.Status) || columns.HasId((int)SpmEmployee.Column.Status_Desc) || columns.HasId((int)SpmEmployee.Column.Status_Ind))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployee_Status, aliasEmployee));
|
||||
if (columns.HasId((int)SpmEmployee.Column.CreateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployee_CreateOn, aliasEmployee));
|
||||
if (columns.HasId((int)SpmEmployee.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmEmployee_UpdateOn, aliasEmployee));
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetEmployeeQueryFilter(prm));
|
||||
|
||||
if (prm.IncludedIds.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetEmployeeSortColumns(prm))
|
||||
query.OrderBy.Add(sortColumn);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
//return new DbResultSet_DataTableReader(db, query.BuildQuery());
|
||||
return new Sarand.Win.Dbas.Data.DbResultSet_DataReader(db, query.BuildQuery());
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
public override DataValue GetEmployeeDataValue(ColumnDfn column, NamedValue.Map values)
|
||||
{
|
||||
DataValue value = new DataValue();
|
||||
switch ((SpmEmployee.Column)column.Id)
|
||||
{
|
||||
// Notes.
|
||||
case SpmEmployee.Column.Notes:
|
||||
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
|
||||
break;
|
||||
|
||||
// Status.
|
||||
case SpmEmployee.Column.Status_Desc:
|
||||
case SpmEmployee.Column.Status_Ind:
|
||||
{
|
||||
String statusCode = values.GetValue(column.DataName).ToString();
|
||||
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
|
||||
if (column.Id == (int)SpmEmployee.Column.Status_Desc)
|
||||
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
|
||||
else if (column.Id == (int)SpmEmployee.Column.Status_Ind)
|
||||
value = new DataValue(SpmEmployee.GetStatusTriState(status));
|
||||
}
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
}
|
||||
return value;
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,496 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Sarand.Core.App;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.Win.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
using Sarand.PatientMgr.Win.Dbas.Bus;
|
||||
using Sarand.PatientMgr.Win.Dbas.Internal;
|
||||
//using Sarand.PatientMgr.Win.Dbas.UpdateLog;
|
||||
using Sarand.Win.Dbas.Data;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
internal partial class SpmInstitutionMgr_Dbas : SpmInstitutionMgr
|
||||
{
|
||||
//*******************************************************************
|
||||
// I n s t i t u t i o n
|
||||
//*******************************************************************
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Institution exists.
|
||||
public override bool InstitutionExistsById(SysId institutionId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(institutionId)) return false;
|
||||
SpmInstitution.Params prmInstitution = new SpmInstitution.Params();
|
||||
prmInstitution.IncludedIds.Add(institutionId);
|
||||
prmInstitution.StatusCat = SpmInstitution.StatusCat.Any;
|
||||
return GetInstitutionCount(prmInstitution) == 1;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get Institution.
|
||||
public override SpmInstitution GetInstitution(SpmInstitution.Params prm)
|
||||
{
|
||||
return GetInstitution(GetInstitutionQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
private SpmInstitution GetInstitution(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetInstitutionCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple Institutiones found");
|
||||
return null;
|
||||
}
|
||||
SpmInstitution institution = null;
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmInstitution_Db dbInstitution = new SwmInstitution_Db(DbInfo);
|
||||
dbInstitution.PopulateFrom(dbCommand, aliasInstitution, filter);
|
||||
institution = CreateInstitution(dbInstitution);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
Logger.Warn(GetType().Name + ".GetInstitution\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return institution;
|
||||
}
|
||||
public override SpmInstitution GetInstitutionById(SysId institutionId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(institutionId)) return null;
|
||||
SpmInstitution.Params prmInstitution = new SpmInstitution.Params();
|
||||
prmInstitution.IncludedIds.Add(institutionId);
|
||||
prmInstitution.StatusCat = SpmInstitution.StatusCat.Any;
|
||||
return GetInstitution(prmInstitution);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create Institution.
|
||||
public override SpmInstitution CreateInstitution(SysId institutionId)
|
||||
{
|
||||
return new SpmInstitution_Dbas(UserContext, null, 0);
|
||||
}
|
||||
private SpmInstitution_Dbas CreateInstitution(SwmInstitution_Db dbInstitution)
|
||||
{
|
||||
ClearErrorState();
|
||||
SpmInstitution_Dbas institution = new SpmInstitution_Dbas(UserContext, new SysId(dbInstitution._Id), (ushort)dbInstitution._Flags);
|
||||
PopulateFrom(dbInstitution, institution);
|
||||
return institution;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate Institution.
|
||||
public override bool IsValidInstitutionData(SpmInstitution.Data data, SpmInstitution.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidInstitutionData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert Institution.
|
||||
public override bool InsertInstitution(SpmInstitution institution, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidInstitution(institution)) return false;
|
||||
if (SysId.IsValid(institution.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmInstitution_Db dbInstitution = new SwmInstitution_Db(DbInfo);
|
||||
PopulateTo(dbInstitution, institution, dbUpdateInfo);
|
||||
if (SwmInstitution_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbInstitution._Id = SysId.ToInt(db.GetNextId("Institution", dbUpdateInfo));
|
||||
}
|
||||
dbInstitution.ExecuteInsertCommand(dbCommand);
|
||||
institution.Id = new SysId(dbInstitution._Id);
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update Institution.
|
||||
public override bool UpdateInstitution(SpmInstitution institution, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidInstitution(institution)) return false;
|
||||
if (!SysId.IsValid(institution.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve Institution.
|
||||
dbConnection.Open();
|
||||
SwmInstitution_Db dbInstitution = new SwmInstitution_Db(DbInfo);
|
||||
dbInstitution.PopulateFrom(dbCommand, aliasInstitution, "Id=" + SysId.ToString(institution.Id));
|
||||
//SpmUpdateLogItemMonitor_Institution updateLogMonitor = new SpmUpdateLogItemMonitor_Institution(UserContext, CreateInstitution(dbInstitution));
|
||||
|
||||
// Update properties.
|
||||
PopulateTo(dbInstitution, institution, dbUpdateInfo);
|
||||
dbInstitution.ExecuteUpdateCommand(dbCommand);
|
||||
|
||||
/* Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(institution);
|
||||
updateLogMonitor.LogUpdates();*/
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete Institution.
|
||||
public override bool InstitutionCanBeDeleted(SpmInstitution institution)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.InstitutionCanBeDeleted(institution)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteInstitution(SpmInstitution institution, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!InstitutionCanBeDeleted(institution)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve Institution.
|
||||
dbConnection.Open();
|
||||
SwmInstitution_Db dbInstitution = new SwmInstitution_Db(DbInfo);
|
||||
dbInstitution.PopulateFrom(dbCommand, aliasInstitution, "Id=" + institution.Id.ToString());
|
||||
// Delete Institution.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmInstitution) + " WHERE Id=" + SysId.ToString(institution.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(SwmInstitution_Db dbInstitution, SpmInstitution institution, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbInstitution._Id = institution.Id.ToInt();
|
||||
dbInstitution._Name = institution.Name;
|
||||
|
||||
dbInstitution._Notes = institution.Notes;
|
||||
dbInstitution._Status = SacsSystem.GetStatusCode(institution.Status);
|
||||
dbInstitution._Flags = (short)institution.Flags;
|
||||
if (!SysId.IsValid(institution.Id))
|
||||
{
|
||||
dbInstitution._CreateOn = DateTime.UtcNow;
|
||||
dbInstitution._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbInstitution._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbInstitution._UpdateOn = DateTime.UtcNow;
|
||||
dbInstitution._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbInstitution._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(SwmInstitution_Db dbInstitution, SpmInstitution institution)
|
||||
{
|
||||
institution.Id = new SysId(dbInstitution._Id);
|
||||
institution.Name = dbInstitution._Name;
|
||||
|
||||
institution.Notes = dbInstitution._Notes;
|
||||
institution.Status = SacsSystem.GetStatusForCode(dbInstitution._Status);
|
||||
institution.SetCreateStamp(dbInstitution._CreateOn, new SysId(dbInstitution._CreateBy), dbInstitution._CreateHost);
|
||||
institution.SetUpdateStamp(dbInstitution._UpdateOn, new SysId(dbInstitution._UpdateBy), dbInstitution._UpdateHost);
|
||||
institution.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Institution column definitions.
|
||||
private static readonly String aliasInstitution = "aInst";
|
||||
private void SetInstitutionColDfn
|
||||
(ColumnDfn col, String caption, int width, SpmDbDfn.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SpmDbDfn.GetTableForColumn(dbCol) == SpmDbDfn.TableIdx.SwmInstitution)
|
||||
alias = aliasInstitution;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SpmDbDfn.GetColumnName(dbCol, false), SpmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SpmDbDfn.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SpmDbDfn.GetColTextLen(dbCol);
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
// Getting prmInstitution column definition.
|
||||
public override ColumnDfn GetInstitutionColumnDfn(SpmInstitution.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
case SpmInstitution.Column.Pos:
|
||||
SetInstitutionColDfn(columnDfn, "Pos", 42, SpmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SpmInstitution.Column.Id:
|
||||
SetInstitutionColDfn(columnDfn, "Id", 40, SpmDbDfn.ColumnIdx.SwmInstitution_Id, ColumnAlignment.Right, DataValue.DataType.Long, aliasInstitution);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
// Institution Properties.
|
||||
case SpmInstitution.Column.Name:
|
||||
SetInstitutionColDfn(columnDfn, "Name", 60, SpmDbDfn.ColumnIdx.SwmInstitution_Name, ColumnAlignment.Default, DataValue.DataType.String, aliasInstitution);
|
||||
break;
|
||||
|
||||
// Common properties.
|
||||
case SpmInstitution.Column.Notes:
|
||||
SetInstitutionColDfn(columnDfn, "Notes", 200, SpmDbDfn.ColumnIdx.SwmInstitution_Notes);
|
||||
break;
|
||||
case SpmInstitution.Column.Status:
|
||||
SetInstitutionColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmInstitution_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmInstitution.Column.Status_Desc:
|
||||
SetInstitutionColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmInstitution_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmInstitution.Column.Status_Ind:
|
||||
SetInstitutionColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmInstitution_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SpmInstitution.Column.CreateOn_Date:
|
||||
SetInstitutionColDfn(columnDfn, "Created", 65, SpmDbDfn.ColumnIdx.SwmInstitution_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SpmInstitution.Column.UpdateOn_Date:
|
||||
SetInstitutionColDfn(columnDfn, "Updated", 65, SpmDbDfn.ColumnIdx.SwmInstitution_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
}
|
||||
if (!String.IsNullOrEmpty(caption))
|
||||
columnDfn.Caption = caption;
|
||||
if (width > 0)
|
||||
columnDfn.Width = width;
|
||||
return columnDfn;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Institution query filter.
|
||||
public override List<string> GetInstitutionQueryFilter(SpmInstitution.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
|
||||
// Institution Id.
|
||||
String includedIds = prm.IncludedIds.Concat(",");
|
||||
if (!includedIds.IsEmpty())
|
||||
filter.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmInstitution_Id, aliasInstitution) + " IN (" + includedIds + ")");
|
||||
String excludedIds = prm.ExcludedIds.Concat(",");
|
||||
if (!excludedIds.IsEmpty())
|
||||
filter.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmInstitution_Id, aliasInstitution) + " NOT IN (" + excludedIds + ")");
|
||||
|
||||
// Name.
|
||||
String colInstitution_Name = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmInstitution_Name, aliasInstitution);
|
||||
if (!StringUtil.IsEmpty(prm.Name))
|
||||
filter.Add(colInstitution_Name + "='" + DbQuery.FormatForCondition(prm.Name) + "'");
|
||||
if (!StringUtil.IsEmpty(prm.NamePartial))
|
||||
filter.Add(colInstitution_Name + " LIKE '%" + DbQuery.FormatForLike(prm.NamePartial) + "%'");
|
||||
|
||||
// Notes.
|
||||
String colInstitution_Notes = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmInstitution_Notes, aliasInstitution);
|
||||
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
||||
filter.Add(colInstitution_Notes + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat == SpmInstitution.StatusCat.Any)
|
||||
filter.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmInstitution_Status, aliasInstitution) + " = '" + SacsSystem.GetStatusCode(SaStatus.Any) + "'");
|
||||
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Institution sort columns.
|
||||
public List<String> GetInstitutionSortColumns(SpmInstitution.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for Institution columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SpmDbDfn.GetTableForColumn((SpmDbDfn.ColumnIdx)columnDfn.DbColumn) == SpmDbDfn.TableIdx.SwmInstitution)
|
||||
{
|
||||
sortCol = SpmDbDfn.GetColumnNameQual((SpmDbDfn.ColumnIdx)columnDfn.DbColumn, aliasInstitution);
|
||||
}
|
||||
else
|
||||
{
|
||||
sortCol = columnDfn.DataName;
|
||||
if (!StringUtil.IsEmpty(columnDfn.SortDataName))
|
||||
sortCol = columnDfn.SortDataName;
|
||||
}
|
||||
if (!sortCol.IsEmpty())
|
||||
{
|
||||
DbOrderByNullMode orderByNullMode = DbOrderByNullMode.Default; // eSaOrderByDemoteNulls, eSaOrderByPromoteNulls
|
||||
sortColumnNames.Add(DbQuery.FormatForOrderBy(sortCol, columnDfn.SortAscending, orderByNullMode).Concat(", "));
|
||||
}
|
||||
}
|
||||
sortColumnNames.RemoveBlanks();
|
||||
if (sortColumnNames.IsEmpty())
|
||||
{
|
||||
// Default sort columns:
|
||||
//sortColumnNames.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmInstitution_Type, aliasInstitution) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Institution count.
|
||||
private long GetInstitutionCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return db.GetRowCount(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmInstitution) + " As " + aliasInstitution, filter);
|
||||
}
|
||||
public override long GetInstitutionCount(SpmInstitution.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetInstitutionCount(GetInstitutionQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Institution list.
|
||||
public override List<SpmInstitution> GetInstitutionList(SpmInstitution.Params prm)
|
||||
{
|
||||
List<SpmInstitution> Institutiones = new List<SpmInstitution>();
|
||||
DbQuery qry = new DbQuery(db.DbmsType);
|
||||
qry.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmInstitution), aliasInstitution);
|
||||
qry.Columns.AddRange(SwmInstitution_Db.Fields);
|
||||
qry.Filters.AddRange(GetInstitutionQueryFilter(prm));
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
dbCommand.CommandText = qry.BuildQuery();
|
||||
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
|
||||
{
|
||||
while (dbDataReader.Read())
|
||||
{
|
||||
SwmInstitution_Db dbInstitution = new SwmInstitution_Db(DbInfo);
|
||||
dbInstitution.PopulateFrom(dbDataReader);
|
||||
Institutiones.Add(CreateInstitution(dbInstitution));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Logger.Warn(GetType().Name + ".GetInstitutionList\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return Institutiones;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Institution query execution.
|
||||
public override DbResultSet ExecuteInstitutionQuery(List<ColumnDfn> columns, SpmInstitution.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(db.DbmsType);
|
||||
query.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmInstitution), aliasInstitution);
|
||||
|
||||
// Institution Properties - add columns as defined in query list.
|
||||
if (columns.HasId((int)SpmInstitution.Column.Id))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmInstitution_Id, aliasInstitution));
|
||||
if (columns.HasId((int)SpmInstitution.Column.Name))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmInstitution_Name, aliasInstitution));
|
||||
|
||||
// Common Properties
|
||||
if (columns.HasId((int)SpmInstitution.Column.Notes))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmInstitution_Notes, aliasInstitution));
|
||||
if (columns.HasId((int)SpmInstitution.Column.Status) || columns.HasId((int)SpmInstitution.Column.Status_Desc) || columns.HasId((int)SpmInstitution.Column.Status_Ind))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmInstitution_Status, aliasInstitution));
|
||||
if (columns.HasId((int)SpmInstitution.Column.CreateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmInstitution_CreateOn, aliasInstitution));
|
||||
if (columns.HasId((int)SpmInstitution.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmInstitution_UpdateOn, aliasInstitution));
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetInstitutionQueryFilter(prm));
|
||||
|
||||
if (prm.IncludedIds.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetInstitutionSortColumns(prm))
|
||||
query.OrderBy.Add(sortColumn);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
//return new DbResultSet_DataTableReader(db, query.BuildQuery());
|
||||
return new Sarand.Win.Dbas.Data.DbResultSet_DataReader(db, query.BuildQuery());
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
public override DataValue GetInstitutionDataValue(ColumnDfn column, NamedValue.Map values)
|
||||
{
|
||||
DataValue value = new DataValue();
|
||||
switch ((SpmInstitution.Column)column.Id)
|
||||
{
|
||||
// Notes.
|
||||
case SpmInstitution.Column.Notes:
|
||||
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
|
||||
break;
|
||||
|
||||
// Status.
|
||||
case SpmInstitution.Column.Status_Desc:
|
||||
case SpmInstitution.Column.Status_Ind:
|
||||
{
|
||||
String statusCode = values.GetValue(column.DataName).ToString();
|
||||
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
|
||||
if (column.Id == (int)SpmInstitution.Column.Status_Desc)
|
||||
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
|
||||
else if (column.Id == (int)SpmInstitution.Column.Status_Ind)
|
||||
value = new DataValue(SpmInstitution.GetStatusTriState(status));
|
||||
}
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
}
|
||||
return value;
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,518 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Sarand.Core.App;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.Win.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
using Sarand.PatientMgr.Win.Dbas.Bus;
|
||||
using Sarand.PatientMgr.Win.Dbas.Internal;
|
||||
//using Sarand.PatientMgr.Win.Dbas.UpdateLog;
|
||||
using Sarand.Win.Dbas.Data;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
internal partial class SpmInstitutionMgr_Dbas : SpmInstitutionMgr
|
||||
{
|
||||
//*******************************************************************
|
||||
// O p e r a t i o n
|
||||
//*******************************************************************
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Operation exists.
|
||||
public override bool OperationExistsById(SysId operationId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(operationId)) return false;
|
||||
SpmOperation.Params prmOperation = new SpmOperation.Params();
|
||||
prmOperation.IncludedIds.Add(operationId);
|
||||
prmOperation.StatusCat = SpmOperation.StatusCat.Any;
|
||||
return GetOperationCount(prmOperation) == 1;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get Operation.
|
||||
public override SpmOperation GetOperation(SpmOperation.Params prm)
|
||||
{
|
||||
return GetOperation(GetOperationQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
private SpmOperation GetOperation(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetOperationCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple Operationes found");
|
||||
return null;
|
||||
}
|
||||
SpmOperation operation = null;
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmOperation_Db dbOperation = new SwmOperation_Db(DbInfo);
|
||||
dbOperation.PopulateFrom(dbCommand, aliasOperation, filter);
|
||||
operation = CreateOperation(dbOperation);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
Logger.Warn(GetType().Name + ".GetOperation\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return operation;
|
||||
}
|
||||
public override SpmOperation GetOperationById(SysId operationId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(operationId)) return null;
|
||||
SpmOperation.Params prmOperation = new SpmOperation.Params();
|
||||
prmOperation.IncludedIds.Add(operationId);
|
||||
prmOperation.StatusCat = SpmOperation.StatusCat.Any;
|
||||
return GetOperation(prmOperation);
|
||||
}
|
||||
public override SpmOperation GetOperationByCode(String code)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!StringUtil.IsEmpty(code)) return null;
|
||||
SpmOperation.Params prmOperation = new SpmOperation.Params();
|
||||
prmOperation.CodePartial = code;
|
||||
prmOperation.StatusCat = SpmOperation.StatusCat.Any;
|
||||
return GetOperation(prmOperation);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create Operation.
|
||||
public override SpmOperation CreateOperation(SysId departmentId, SysId institutionId)
|
||||
{
|
||||
return new SpmOperation_Dbas(UserContext, departmentId, institutionId, 0);
|
||||
}
|
||||
private SpmOperation_Dbas CreateOperation(SwmOperation_Db dbOperation)
|
||||
{
|
||||
ClearErrorState();
|
||||
SpmOperation_Dbas operation = new SpmOperation_Dbas(UserContext, new SysId(0), new SysId(dbOperation._InstitutionId), (ushort)dbOperation._Flags);
|
||||
PopulateFrom(dbOperation, operation);
|
||||
return operation;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate Operation.
|
||||
public override bool IsValidOperationData(SpmOperation.Data data, SpmOperation.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidOperationData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert Operation.
|
||||
public override bool InsertOperation(SpmOperation operation, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidOperation(operation)) return false;
|
||||
if (SysId.IsValid(operation.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmOperation_Db dbOperation = new SwmOperation_Db(DbInfo);
|
||||
PopulateTo(dbOperation, operation, dbUpdateInfo);
|
||||
if (SwmOperation_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbOperation._Id = SysId.ToInt(db.GetNextId("Operation", dbUpdateInfo));
|
||||
}
|
||||
dbOperation.ExecuteInsertCommand(dbCommand);
|
||||
operation.Id = new SysId(dbOperation._Id);
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update Operation.
|
||||
public override bool UpdateOperation(SpmOperation operation, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidOperation(operation)) return false;
|
||||
if (!SysId.IsValid(operation.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve Operation.
|
||||
dbConnection.Open();
|
||||
SwmOperation_Db dbOperation = new SwmOperation_Db(DbInfo);
|
||||
dbOperation.PopulateFrom(dbCommand, aliasOperation, "Id=" + SysId.ToString(operation.Id));
|
||||
//SpmUpdateLogItemMonitor_Operation updateLogMonitor = new SpmUpdateLogItemMonitor_Operation(UserContext, CreateOperation(dbOperation));
|
||||
|
||||
// Update properties.
|
||||
PopulateTo(dbOperation, operation, dbUpdateInfo);
|
||||
dbOperation.ExecuteUpdateCommand(dbCommand);
|
||||
|
||||
/* Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(operation);
|
||||
updateLogMonitor.LogUpdates();*/
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete Operation.
|
||||
public override bool OperationCanBeDeleted(SpmOperation operation)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.OperationCanBeDeleted(operation)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteOperation(SpmOperation operation, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!OperationCanBeDeleted(operation)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve Operation.
|
||||
dbConnection.Open();
|
||||
SwmOperation_Db dbOperation = new SwmOperation_Db(DbInfo);
|
||||
dbOperation.PopulateFrom(dbCommand, aliasOperation, "Id=" + operation.Id.ToString());
|
||||
// Delete Operation.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmOperation) + " WHERE Id=" + SysId.ToString(operation.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(SwmOperation_Db dbOperation, SpmOperation operation, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbOperation._Id = operation.Id.ToInt();
|
||||
dbOperation._Code = operation.Code;
|
||||
dbOperation._Description = operation.Description;
|
||||
|
||||
dbOperation._Notes = operation.Notes;
|
||||
dbOperation._Status = SacsSystem.GetStatusCode(operation.Status);
|
||||
dbOperation._Flags = (short)operation.Flags;
|
||||
if (!SysId.IsValid(operation.Id))
|
||||
{
|
||||
dbOperation._CreateOn = DateTime.UtcNow;
|
||||
dbOperation._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbOperation._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbOperation._UpdateOn = DateTime.UtcNow;
|
||||
dbOperation._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbOperation._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(SwmOperation_Db dbOperation, SpmOperation operation)
|
||||
{
|
||||
operation.Id = new SysId(dbOperation._Id);
|
||||
operation.Code = dbOperation._Code;
|
||||
operation.Description = dbOperation._Description;
|
||||
|
||||
operation.Notes = dbOperation._Notes;
|
||||
operation.Status = SacsSystem.GetStatusForCode(dbOperation._Status);
|
||||
operation.SetCreateStamp(dbOperation._CreateOn, new SysId(dbOperation._CreateBy), dbOperation._CreateHost);
|
||||
operation.SetUpdateStamp(dbOperation._UpdateOn, new SysId(dbOperation._UpdateBy), dbOperation._UpdateHost);
|
||||
operation.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Operation column definitions.
|
||||
private static readonly String aliasOperation = "aOper";
|
||||
private void SetOperationColDfn
|
||||
(ColumnDfn col, String caption, int width, SpmDbDfn.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SpmDbDfn.GetTableForColumn(dbCol) == SpmDbDfn.TableIdx.SwmOperation)
|
||||
alias = aliasOperation;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SpmDbDfn.GetColumnName(dbCol, false), SpmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SpmDbDfn.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SpmDbDfn.GetColTextLen(dbCol);
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
// Getting prmOperation column definition.
|
||||
public override ColumnDfn GetOperationColumnDfn(SpmOperation.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
case SpmOperation.Column.Pos:
|
||||
SetOperationColDfn(columnDfn, "Pos", 42, SpmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SpmOperation.Column.Id:
|
||||
SetOperationColDfn(columnDfn, "Id", 40, SpmDbDfn.ColumnIdx.SwmOperation_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
// Operation Properties.
|
||||
case SpmOperation.Column.InstitutionId:
|
||||
SetOperationColDfn(columnDfn, "InstitutionId", 40, SpmDbDfn.ColumnIdx.SwmOperation_InstitutionId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SpmOperation.Column.Code:
|
||||
SetOperationColDfn(columnDfn, "Code", 60, SpmDbDfn.ColumnIdx.SwmOperation_Code, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
case SpmOperation.Column.Description:
|
||||
SetOperationColDfn(columnDfn, "Description", 60, SpmDbDfn.ColumnIdx.SwmOperation_Description, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
|
||||
// Derived properties.
|
||||
|
||||
// Common properties.
|
||||
case SpmOperation.Column.Notes:
|
||||
SetOperationColDfn(columnDfn, "Notes", 200, SpmDbDfn.ColumnIdx.SwmOperation_Notes);
|
||||
break;
|
||||
case SpmOperation.Column.Status:
|
||||
SetOperationColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmOperation_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmOperation.Column.Status_Desc:
|
||||
SetOperationColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmOperation_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmOperation.Column.Status_Ind:
|
||||
SetOperationColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmOperation_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SpmOperation.Column.CreateOn_Date:
|
||||
SetOperationColDfn(columnDfn, "Created", 65, SpmDbDfn.ColumnIdx.SwmOperation_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SpmOperation.Column.UpdateOn_Date:
|
||||
SetOperationColDfn(columnDfn, "Updated", 65, SpmDbDfn.ColumnIdx.SwmOperation_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
}
|
||||
if (!String.IsNullOrEmpty(caption))
|
||||
columnDfn.Caption = caption;
|
||||
if (width > 0)
|
||||
columnDfn.Width = width;
|
||||
return columnDfn;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Operation query filter.
|
||||
public override List<string> GetOperationQueryFilter(SpmOperation.Params prm)
|
||||
{
|
||||
List<String> filters = new List<String>();
|
||||
|
||||
// Operation Id.
|
||||
String includedIds = prm.IncludedIds.Concat(",");
|
||||
if (!includedIds.IsEmpty())
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmOperation_Id, aliasOperation) + " IN (" + includedIds + ")");
|
||||
String excludedIds = prm.ExcludedIds.Concat(",");
|
||||
if (!excludedIds.IsEmpty())
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmOperation_Id, aliasOperation) + " NOT IN (" + excludedIds + ")");
|
||||
|
||||
// Institution Id.
|
||||
String colInstitutionId = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmOperation_InstitutionId, aliasOperation);
|
||||
if (SysId.IsValid(prm.InstitutionId))
|
||||
filters.Add(colInstitutionId + "=" + prm.InstitutionId.ToString());
|
||||
|
||||
// Code Partial.
|
||||
String colCode = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmOperation_Code, aliasOperation);
|
||||
String codePartial = DbQuery.FormatForCondition(prm.CodePartial);
|
||||
if (!StringUtil.IsEmpty(codePartial))
|
||||
filters.Add(DbQuery.FormatFn_Left(colCode, codePartial.Length) + "='" + codePartial + "'");
|
||||
|
||||
// Description Partial.
|
||||
String colDesc = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmOperation_Description, aliasOperation);
|
||||
String descPartial = DbQuery.FormatForCondition(prm.DescriptionPartial);
|
||||
if (!StringUtil.IsEmpty(descPartial))
|
||||
filters.Add(DbQuery.FormatFn_Left(colDesc, descPartial.Length) + "='" + descPartial + "'");
|
||||
|
||||
if (filters.Count < 1) filters.Add("1=1");
|
||||
return filters;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Operation sort columns.
|
||||
public List<String> GetOperationSortColumns(SpmOperation.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for Operation columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SpmDbDfn.GetTableForColumn((SpmDbDfn.ColumnIdx)columnDfn.DbColumn) == SpmDbDfn.TableIdx.SwmOperation)
|
||||
{
|
||||
sortCol = SpmDbDfn.GetColumnNameQual((SpmDbDfn.ColumnIdx)columnDfn.DbColumn, aliasOperation);
|
||||
}
|
||||
else
|
||||
{
|
||||
sortCol = columnDfn.DataName;
|
||||
if (!StringUtil.IsEmpty(columnDfn.SortDataName))
|
||||
sortCol = columnDfn.SortDataName;
|
||||
}
|
||||
if (!sortCol.IsEmpty())
|
||||
{
|
||||
DbOrderByNullMode orderByNullMode = DbOrderByNullMode.Default; // eSaOrderByDemoteNulls, eSaOrderByPromoteNulls
|
||||
sortColumnNames.Add(DbQuery.FormatForOrderBy(sortCol, columnDfn.SortAscending, orderByNullMode).Concat(", "));
|
||||
}
|
||||
}
|
||||
sortColumnNames.RemoveBlanks();
|
||||
if (sortColumnNames.IsEmpty())
|
||||
{
|
||||
// Default sort columns:
|
||||
//sortColumnNames.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmOperation_Type, aliasOperation) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Operation count.
|
||||
private long GetOperationCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return db.GetRowCount(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmOperation) + " As " + aliasOperation, filter);
|
||||
}
|
||||
public override long GetOperationCount(SpmOperation.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetOperationCount(GetOperationQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Operation list.
|
||||
public override List<SpmOperation> GetOperationList(SpmOperation.Params prm)
|
||||
{
|
||||
List<SpmOperation> Operationes = new List<SpmOperation>();
|
||||
DbQuery qry = new DbQuery(db.DbmsType);
|
||||
qry.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmOperation), aliasOperation);
|
||||
qry.Columns.AddRange(SwmOperation_Db.Fields);
|
||||
qry.Filters.AddRange(GetOperationQueryFilter(prm));
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
dbCommand.CommandText = qry.BuildQuery();
|
||||
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
|
||||
{
|
||||
while (dbDataReader.Read())
|
||||
{
|
||||
SwmOperation_Db dbOperation = new SwmOperation_Db(DbInfo);
|
||||
dbOperation.PopulateFrom(dbDataReader);
|
||||
Operationes.Add(CreateOperation(dbOperation));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Logger.Warn(GetType().Name + ".GetOperationList\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return Operationes;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Operation query execution.
|
||||
public override DbResultSet ExecuteOperationQuery(List<ColumnDfn> columns, SpmOperation.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(db.DbmsType);
|
||||
query.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmOperation), aliasOperation);
|
||||
|
||||
// Operation Properties - add columns as defined in query list.
|
||||
if (columns.HasId((int)SpmOperation.Column.Id))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmOperation_Id, aliasOperation));
|
||||
if (columns.HasId((int)SpmOperation.Column.Code))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmOperation_Code, aliasOperation));
|
||||
if (columns.HasId((int)SpmOperation.Column.Description))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmOperation_Description, aliasOperation));
|
||||
|
||||
// Common Properties
|
||||
if (columns.HasId((int)SpmOperation.Column.Notes))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmOperation_Notes, aliasOperation));
|
||||
if (columns.HasId((int)SpmOperation.Column.Status) || columns.HasId((int)SpmOperation.Column.Status_Desc) || columns.HasId((int)SpmOperation.Column.Status_Ind))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmOperation_Status, aliasOperation));
|
||||
if (columns.HasId((int)SpmOperation.Column.CreateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmOperation_CreateOn, aliasOperation));
|
||||
if (columns.HasId((int)SpmOperation.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmOperation_UpdateOn, aliasOperation));
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetOperationQueryFilter(prm));
|
||||
|
||||
if (prm.IncludedIds.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetOperationSortColumns(prm))
|
||||
query.OrderBy.Add(sortColumn);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
//return new DbResultSet_DataTableReader(db, query.BuildQuery());
|
||||
return new Sarand.Win.Dbas.Data.DbResultSet_DataReader(db, query.BuildQuery());
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
public override DataValue GetOperationDataValue(ColumnDfn column, NamedValue.Map values)
|
||||
{
|
||||
DataValue value = new DataValue();
|
||||
switch ((SpmOperation.Column)column.Id)
|
||||
{
|
||||
// Notes.
|
||||
case SpmOperation.Column.Notes:
|
||||
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
|
||||
break;
|
||||
|
||||
// Status.
|
||||
case SpmOperation.Column.Status_Desc:
|
||||
case SpmOperation.Column.Status_Ind:
|
||||
{
|
||||
String statusCode = values.GetValue(column.DataName).ToString();
|
||||
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
|
||||
if (column.Id == (int)SpmOperation.Column.Status_Desc)
|
||||
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
|
||||
else if (column.Id == (int)SpmOperation.Column.Status_Ind)
|
||||
value = new DataValue(SpmOperation.GetStatusTriState(status));
|
||||
}
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
}
|
||||
return value;
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,549 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Sarand.Core.App;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.Win.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
using Sarand.PatientMgr.Win.Dbas.Bus;
|
||||
using Sarand.PatientMgr.Win.Dbas.Internal;
|
||||
//using Sarand.PatientMgr.Win.Dbas.UpdateLog;
|
||||
using Sarand.Win.Dbas.Data;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
internal partial class SpmInstitutionMgr_Dbas : SpmInstitutionMgr
|
||||
{
|
||||
//*******************************************************************
|
||||
// P a t i e n t
|
||||
//*******************************************************************
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Patient exists.
|
||||
public override bool PatientExistsById(SysId admissionActionId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(admissionActionId)) return false;
|
||||
SpmPatient.Params prmPatient = new SpmPatient.Params();
|
||||
prmPatient.IncludedIds.Add(admissionActionId);
|
||||
prmPatient.StatusCat = SpmPatient.StatusCat.Any;
|
||||
return GetPatientCount(prmPatient) == 1;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get Patient.
|
||||
public override SpmPatient GetPatient(SpmPatient.Params prm)
|
||||
{
|
||||
return GetPatient(GetPatientQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
private SpmPatient GetPatient(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetPatientCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple Patientes found");
|
||||
return null;
|
||||
}
|
||||
SpmPatient admissionAction = null;
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmPatient_Db dbPatient = new SwmPatient_Db(DbInfo);
|
||||
dbPatient.PopulateFrom(dbCommand, aliasPatient, filter);
|
||||
admissionAction = CreatePatient(dbPatient);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
Logger.Warn(GetType().Name + ".GetPatient\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return admissionAction;
|
||||
}
|
||||
public override SpmPatient GetPatientById(SysId admissionActionId)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SysId.IsValid(admissionActionId)) return null;
|
||||
SpmPatient.Params prmPatient = new SpmPatient.Params();
|
||||
prmPatient.IncludedIds.Add(admissionActionId);
|
||||
prmPatient.StatusCat = SpmPatient.StatusCat.Any;
|
||||
return GetPatient(prmPatient);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create Patient.
|
||||
public override SpmPatient CreatePatient(SysId id, SysId institutionId)
|
||||
{
|
||||
return new SpmPatient_Dbas(UserContext, id, institutionId, 0);
|
||||
}
|
||||
private SpmPatient_Dbas CreatePatient(SwmPatient_Db dbPatient)
|
||||
{
|
||||
ClearErrorState();
|
||||
SpmPatient_Dbas admissionAction = new SpmPatient_Dbas(UserContext, new SysId(dbPatient._Id), new SysId(dbPatient._InstitutionId), (ushort)dbPatient._Flags);
|
||||
PopulateFrom(dbPatient, admissionAction);
|
||||
return admissionAction;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate Patient.
|
||||
public override bool IsValidPatientData(SpmPatient.Data data, SpmPatient.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidPatientData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert Patient.
|
||||
public override bool InsertPatient(SpmPatient admissionAction, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidPatient(admissionAction)) return false;
|
||||
if (SysId.IsValid(admissionAction.Id)) return SetErrorState(ErrorMessage.ValiditemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
SwmPatient_Db dbPatient = new SwmPatient_Db(DbInfo);
|
||||
PopulateTo(dbPatient, admissionAction, dbUpdateInfo);
|
||||
if (SwmPatient_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbPatient._Id = SysId.ToInt(db.GetNextId("Patient", dbUpdateInfo));
|
||||
}
|
||||
dbPatient.ExecuteInsertCommand(dbCommand);
|
||||
admissionAction.Id = new SysId(dbPatient._Id);
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update Patient.
|
||||
public override bool UpdatePatient(SpmPatient admissionAction, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidPatient(admissionAction)) return false;
|
||||
if (!SysId.IsValid(admissionAction.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve Patient.
|
||||
dbConnection.Open();
|
||||
SwmPatient_Db dbPatient = new SwmPatient_Db(DbInfo);
|
||||
dbPatient.PopulateFrom(dbCommand, aliasPatient, "Id=" + SysId.ToString(admissionAction.Id));
|
||||
//SpmUpdateLogItemMonitor_Patient updateLogMonitor = new SpmUpdateLogItemMonitor_Patient(UserContext, CreatePatient(dbPatient));
|
||||
|
||||
// Update properties.
|
||||
PopulateTo(dbPatient, admissionAction, dbUpdateInfo);
|
||||
dbPatient.ExecuteUpdateCommand(dbCommand);
|
||||
|
||||
/* Record updates.
|
||||
updateLogMonitor.RecordUpdatedValues(admissionAction);
|
||||
updateLogMonitor.LogUpdates();*/
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete Patient.
|
||||
public override bool PatientCanBeDeleted(SpmPatient admissionAction)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.PatientCanBeDeleted(admissionAction)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeletePatient(SpmPatient admissionAction, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!PatientCanBeDeleted(admissionAction)) return false;
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve Patient.
|
||||
dbConnection.Open();
|
||||
SwmPatient_Db dbPatient = new SwmPatient_Db(DbInfo);
|
||||
dbPatient.PopulateFrom(dbCommand, aliasPatient, "Id=" + admissionAction.Id.ToString());
|
||||
// Delete Patient.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmPatient) + " WHERE Id=" + SysId.ToString(admissionAction.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(SwmPatient_Db dbPatient, SpmPatient patient, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbPatient._Id = patient.Id.ToInt();
|
||||
dbPatient._PatientNo = patient.PatientNo;
|
||||
dbPatient._NhsNumber = patient.NhsNumber;
|
||||
dbPatient._Title = patient.Title;
|
||||
dbPatient._Forename = patient.Forename;
|
||||
dbPatient._Surname = patient.Surname;
|
||||
dbPatient._Gender = (short)patient.Gender;
|
||||
dbPatient._Age = patient.Age;
|
||||
dbPatient._AgeOn = patient.AgeOn;
|
||||
dbPatient._BirthOn = patient.BirthOn.DateToInt32();
|
||||
|
||||
dbPatient._Notes = patient.Notes;
|
||||
dbPatient._Status = SacsSystem.GetStatusCode(patient.Status);
|
||||
dbPatient._Flags = (short)patient.Flags;
|
||||
if (!SysId.IsValid(patient.Id))
|
||||
{
|
||||
dbPatient._CreateOn = DateTime.UtcNow;
|
||||
dbPatient._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbPatient._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbPatient._UpdateOn = DateTime.UtcNow;
|
||||
dbPatient._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbPatient._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(SwmPatient_Db dbPatient, SpmPatient patient)
|
||||
{
|
||||
patient.Id = new SysId(dbPatient._Id);
|
||||
patient.PatientNo = dbPatient._PatientNo;
|
||||
patient.NhsNumber = dbPatient._NhsNumber;
|
||||
patient.Title = dbPatient._Title;
|
||||
patient.Forename = dbPatient._Forename;
|
||||
patient.Surname = dbPatient._Surname;
|
||||
patient.Gender = (Spm.Gender)dbPatient._Gender;
|
||||
patient.Age = dbPatient._Age;
|
||||
patient.AgeOn = dbPatient._AgeOn;
|
||||
patient.BirthOn = new DateTime(dbPatient._BirthOn);
|
||||
|
||||
patient.Notes = dbPatient._Notes;
|
||||
patient.Status = SacsSystem.GetStatusForCode(dbPatient._Status);
|
||||
patient.SetCreateStamp(dbPatient._CreateOn, new SysId(dbPatient._CreateBy), dbPatient._CreateHost);
|
||||
patient.SetUpdateStamp(dbPatient._UpdateOn, new SysId(dbPatient._UpdateBy), dbPatient._UpdateHost);
|
||||
patient.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Patient column definitions.
|
||||
private static readonly String aliasPatient = "aAdmAct";
|
||||
private void SetPatientColDfn
|
||||
(ColumnDfn col, String caption, int width, SpmDbDfn.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SpmDbDfn.GetTableForColumn(dbCol) == SpmDbDfn.TableIdx.SwmPatient)
|
||||
alias = aliasPatient;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SpmDbDfn.GetColumnName(dbCol, false), SpmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SpmDbDfn.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SpmDbDfn.GetColTextLen(dbCol);
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
// Getting prmPatient column definition.
|
||||
public override ColumnDfn GetPatientColumnDfn(SpmPatient.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
case SpmPatient.Column.Pos:
|
||||
SetPatientColDfn(columnDfn, "Pos", 42, SpmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SpmPatient.Column.Id:
|
||||
SetPatientColDfn(columnDfn, "Id", 40, SpmDbDfn.ColumnIdx.SwmPatient_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
// Patient Properties.
|
||||
case SpmPatient.Column.InstitutionId:
|
||||
SetPatientColDfn(columnDfn, "InstitutionId", 40, SpmDbDfn.ColumnIdx.SwmPatient_InstitutionId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SpmPatient.Column.Title:
|
||||
SetPatientColDfn(columnDfn, "Title", 90, SpmDbDfn.ColumnIdx.SwmPatient_Title);
|
||||
break;
|
||||
case SpmPatient.Column.Surname:
|
||||
SetPatientColDfn(columnDfn, "Surname", 90, SpmDbDfn.ColumnIdx.SwmPatient_Surname);
|
||||
break;
|
||||
case SpmPatient.Column.Forename:
|
||||
SetPatientColDfn(columnDfn, "Forename", 90, SpmDbDfn.ColumnIdx.SwmPatient_Forename);
|
||||
break;
|
||||
case SpmPatient.Column.BirthOn:
|
||||
SetPatientColDfn(columnDfn, "DOB", 75, SpmDbDfn.ColumnIdx.SwmPatient_BirthOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.DateFormat = "dd-MMM-yyyy";
|
||||
break;
|
||||
case SpmPatient.Column.Age:
|
||||
SetPatientColDfn(columnDfn, "Age", 40, SpmDbDfn.ColumnIdx.SwmPatient_Age, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmPatient.Column.AgeOn:
|
||||
SetPatientColDfn(columnDfn, "AgeOn", 75, SpmDbDfn.ColumnIdx.SwmPatient_AgeOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.DateFormat = "d-MMM-yy";
|
||||
break;
|
||||
|
||||
// Common properties.
|
||||
case SpmPatient.Column.Notes:
|
||||
SetPatientColDfn(columnDfn, "Notes", 200, SpmDbDfn.ColumnIdx.SwmPatient_Notes);
|
||||
break;
|
||||
case SpmPatient.Column.Status:
|
||||
SetPatientColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmPatient_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmPatient.Column.Status_Desc:
|
||||
SetPatientColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmPatient_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SpmPatient.Column.Status_Ind:
|
||||
SetPatientColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmPatient_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SpmPatient.Column.CreateOn_Date:
|
||||
SetPatientColDfn(columnDfn, "Created", 65, SpmDbDfn.ColumnIdx.SwmPatient_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SpmPatient.Column.UpdateOn_Date:
|
||||
SetPatientColDfn(columnDfn, "Updated", 65, SpmDbDfn.ColumnIdx.SwmPatient_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
}
|
||||
if (!String.IsNullOrEmpty(caption))
|
||||
columnDfn.Caption = caption;
|
||||
if (width > 0)
|
||||
columnDfn.Width = width;
|
||||
return columnDfn;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Patient query filter.
|
||||
public override List<string> GetPatientQueryFilter(SpmPatient.Params prm)
|
||||
{
|
||||
List<String> filters = new List<String>();
|
||||
|
||||
// Patient Id.
|
||||
String includedIds = prm.IncludedIds.Concat(",");
|
||||
if (!includedIds.IsEmpty())
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmPatient_Id, aliasPatient) + " IN (" + includedIds + ")");
|
||||
String excludedIds = prm.ExcludedIds.Concat(",");
|
||||
if (!excludedIds.IsEmpty())
|
||||
filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmPatient_Id, aliasPatient) + " NOT IN (" + excludedIds + ")");
|
||||
|
||||
// Institution Id.
|
||||
String colInstitutionId = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmPatient_InstitutionId, aliasPatient);
|
||||
if (SysId.IsValid(prm.InstitutionId))
|
||||
filters.Add(colInstitutionId + "=" + prm.InstitutionId.ToString());
|
||||
|
||||
// Partial No.
|
||||
String patientNo = DbQuery.FormatForCondition(prm.PatientNo);
|
||||
String colPatientNo = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmPatient_PatientNo, aliasPatient);
|
||||
if (!StringUtil.IsEmpty(patientNo))
|
||||
filters.Add(DbQuery.FormatFn_Left(colPatientNo, prm.PatientNo.Length) + "='" + patientNo + "'");
|
||||
|
||||
// Partial Surname.
|
||||
String surname = DbQuery.FormatForCondition(prm.Surname);
|
||||
String colSurname = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmPatient_Surname, aliasPatient);
|
||||
if (!StringUtil.IsEmpty(surname))
|
||||
filters.Add(DbQuery.FormatFn_Left(colSurname, prm.Surname.Length) + "='" + surname + "'");
|
||||
|
||||
if (filters.Count < 1) filters.Add("1=1");
|
||||
return filters;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Patient sort columns.
|
||||
public List<String> GetPatientSortColumns(SpmPatient.Params prm)
|
||||
{
|
||||
// Sort sequence.
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for Patient columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SpmDbDfn.GetTableForColumn((SpmDbDfn.ColumnIdx)columnDfn.DbColumn) == SpmDbDfn.TableIdx.SwmPatient)
|
||||
{
|
||||
sortCol = SpmDbDfn.GetColumnNameQual((SpmDbDfn.ColumnIdx)columnDfn.DbColumn, aliasPatient);
|
||||
}
|
||||
else
|
||||
{
|
||||
sortCol = columnDfn.DataName;
|
||||
if (!StringUtil.IsEmpty(columnDfn.SortDataName))
|
||||
sortCol = columnDfn.SortDataName;
|
||||
}
|
||||
if (!sortCol.IsEmpty())
|
||||
{
|
||||
DbOrderByNullMode orderByNullMode = DbOrderByNullMode.Default; // eSaOrderByDemoteNulls, eSaOrderByPromoteNulls
|
||||
sortColumnNames.Add(DbQuery.FormatForOrderBy(sortCol, columnDfn.SortAscending, orderByNullMode).Concat(", "));
|
||||
}
|
||||
}
|
||||
sortColumnNames.RemoveBlanks();
|
||||
if (sortColumnNames.IsEmpty())
|
||||
{
|
||||
// Default sort columns:
|
||||
//sortColumnNames.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmPatient_Type, aliasPatient) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Patient count.
|
||||
private long GetPatientCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return db.GetRowCount(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmPatient) + " As " + aliasPatient, filter);
|
||||
}
|
||||
public override long GetPatientCount(SpmPatient.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetPatientCount(GetPatientQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Patient list.
|
||||
public override List<SpmPatient> GetPatientList(SpmPatient.Params prm)
|
||||
{
|
||||
List<SpmPatient> Patientes = new List<SpmPatient>();
|
||||
DbQuery qry = new DbQuery(db.DbmsType);
|
||||
qry.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmPatient), aliasPatient);
|
||||
qry.Columns.AddRange(SwmPatient_Db.Fields);
|
||||
qry.Filters.AddRange(GetPatientQueryFilter(prm));
|
||||
// Query data.
|
||||
using (var dbConnection = db.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
dbCommand.CommandText = qry.BuildQuery();
|
||||
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
|
||||
{
|
||||
while (dbDataReader.Read())
|
||||
{
|
||||
SwmPatient_Db dbPatient = new SwmPatient_Db(DbInfo);
|
||||
dbPatient.PopulateFrom(dbDataReader);
|
||||
Patientes.Add(CreatePatient(dbPatient));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Logger.Warn(GetType().Name + ".GetPatientList\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
|
||||
}
|
||||
}
|
||||
return Patientes;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Patient query execution.
|
||||
public override DbResultSet ExecutePatientQuery(List<ColumnDfn> columns, SpmPatient.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(db.DbmsType);
|
||||
query.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmPatient), aliasPatient);
|
||||
|
||||
// Patient Properties - add columns as defined in query list.
|
||||
if (columns.HasId((int)SpmPatient.Column.Id))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmPatient_Id, aliasPatient));
|
||||
if (columns.HasId((int)SpmPatient.Column.InstitutionId))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmPatient_InstitutionId, aliasPatient));
|
||||
if (columns.HasId((int)SpmPatient.Column.PatientNo))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmPatient_PatientNo, aliasPatient));
|
||||
if (columns.HasId((int)SpmPatient.Column.NhsNumber))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmPatient_NhsNumber, aliasPatient));
|
||||
if (columns.HasId((int)SpmPatient.Column.Title))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmPatient_Title, aliasPatient));
|
||||
if (columns.HasId((int)SpmPatient.Column.Forename))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmPatient_Forename, aliasPatient));
|
||||
if (columns.HasId((int)SpmPatient.Column.Surname))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmPatient_Surname, aliasPatient));
|
||||
if (columns.HasId((int)SpmPatient.Column.BirthOn))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmPatient_BirthOn, aliasPatient));
|
||||
if (columns.HasId((int)SpmPatient.Column.Age))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmPatient_Age, aliasPatient));
|
||||
if (columns.HasId((int)SpmPatient.Column.AgeOn))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmPatient_AgeOn, aliasPatient));
|
||||
|
||||
// Common Properties
|
||||
if (columns.HasId((int)SpmPatient.Column.Notes))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmPatient_Notes, aliasPatient));
|
||||
if (columns.HasId((int)SpmPatient.Column.Status) || columns.HasId((int)SpmPatient.Column.Status_Desc) || columns.HasId((int)SpmPatient.Column.Status_Ind))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmPatient_Status, aliasPatient));
|
||||
if (columns.HasId((int)SpmPatient.Column.CreateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmPatient_CreateOn, aliasPatient));
|
||||
if (columns.HasId((int)SpmPatient.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmPatient_UpdateOn, aliasPatient));
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetPatientQueryFilter(prm));
|
||||
|
||||
if (prm.IncludedIds.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetPatientSortColumns(prm))
|
||||
query.OrderBy.Add(sortColumn);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
//return new DbResultSet_DataTableReader(db, query.BuildQuery());
|
||||
return new Sarand.Win.Dbas.Data.DbResultSet_DataReader(db, query.BuildQuery());
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
public override DataValue GetPatientDataValue(ColumnDfn column, NamedValue.Map values)
|
||||
{
|
||||
DataValue value = new DataValue();
|
||||
switch ((SpmPatient.Column)column.Id)
|
||||
{
|
||||
// Notes.
|
||||
case SpmPatient.Column.Notes:
|
||||
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
|
||||
break;
|
||||
|
||||
// Status.
|
||||
case SpmPatient.Column.Status_Desc:
|
||||
case SpmPatient.Column.Status_Ind:
|
||||
{
|
||||
String statusCode = values.GetValue(column.DataName).ToString();
|
||||
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
|
||||
if (column.Id == (int)SpmPatient.Column.Status_Desc)
|
||||
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
|
||||
else if (column.Id == (int)SpmPatient.Column.Status_Ind)
|
||||
value = new DataValue(SpmPatient.GetStatusTriState(status));
|
||||
}
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
}
|
||||
return value;
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
using Sarand.Core.Dbas.Base;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Mgr;
|
||||
using Sarand.PatientMgr.Win.Dbas.Data;
|
||||
using Sarand.Win.Dbas.Base;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
internal partial class SpmInstitutionMgr_Dbas : SpmInstitutionMgr
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private SacsDatabase db = null;
|
||||
private readonly SpmDbDataItem.DatabaseInfo dbInfo;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmInstitutionMgr_Dbas (SpmUserContext userContext) :
|
||||
base(userContext)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
protected ISacsDatabase Database { get { return db; } }
|
||||
protected SpmDbDataItem.DatabaseInfo DbInfo { get { return dbInfo; } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
Reference in New Issue
Block a user