Files
2019-06-20 14:49:34 +01:00

349 lines
12 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Sarand.Core.Bus;
using Sarand.PatientMgr.Core.Bus;
using Sarand.Win.Forms.Utils;
using Sarand.Core.Base;
using Sarand.PatientMgr.Core.App;
using Sarand.PatientMgr.Win.Forms.Maint;
using Sarand.PatientMgr.Win.Forms.Controls;
namespace Sarand.PatientMgr.Win.Forms.Panels
{
//=======================================================================
public partial class SpmPanel_FacilitySessions : SpmPanel_Items
{
//-------------------------------------------------------------------
// Configuration.
public enum PanelMode
{
Search,
Maintain,
}
public new class Config : SpmPanel_Items.Config
{
public PanelMode Mode { get; set; } = PanelMode.Maintain;
}
//-------------------------------------------------------------------
// Data members.
private Config config = new Config();
//-------------------------------------------------------------------
// Construction.
public SpmPanel_FacilitySessions() : this(new Config()) { }
public SpmPanel_FacilitySessions(Config config) : base(config)
{
this.config = config;
InitializeComponent();
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null) components.Dispose();
}
base.Dispose(disposing);
}
//-------------------------------------------------------------------
// Properties.
protected override String DefaultMessageTitle { get { return "FacilitySession"; } }
public override int ItemTotal { get { return listViewFacilitySession.ItemTotal; } }
public override int ItemCount { get { return listViewFacilitySession.ItemCount; } }
public override int SelectedItemCount { get { return listViewFacilitySession.SelectedItemCount; } }
public SysId SelectedItemId { get { return listViewFacilitySession.SelectedItemId; } }
public List<SysId> SelectedItemIds { get { return listViewFacilitySession.SelectedItemIds; } }
public SpmFacilitySession SelectedFacilitySession { get { return listViewFacilitySession.SelectedFacilitySession; } }
//-------------------------------------------------------------------
// Configure.
public void SetConfig(Config config)
{
base.SetConfig(config);
this.config = config;
ConfigurePanel();
}
//-------------------------------------------------------------------
// Initialisation.
protected override void OnCreateControl()
{
base.OnCreateControl();
if (this.IsDesignerHosted()) return;
ConfigurePanel();
}
private void ConfigurePanel()
{
if (!Created) return;
if (this.IsDesignerHosted()) return;
// Complete form initialisation.
SetControlActivity();
PositionControls();
}
//-------------------------------------------------------------------
// Initialise tabs.
private void InitTabs()
{
/*tabControl.TabPages.Clear();
tabPages.Clear();
if (!config.DisplayTabs) return;
foreach (var tabPage in tabPages)
tabControl.TabPages.Add(tabPage);
tabControl.Visible = (tabControl.TabPages.Count > 0);*/
}
//-------------------------------------------------------------------
// P a n e l I n t e r f a c e
//-------------------------------------------------------------------
//-------------------------------------------------------------------
// F i l t e r
//-------------------------------------------------------------------
public SpmFacilitySession.Params GetParams()
{
SpmFacilitySession.Params prmFacilitySession = new SpmFacilitySession.Params();
// Sort columns.
prmFacilitySession.SortColumns.AddRange(listViewFacilitySession.GetSortColumns());
return prmFacilitySession;
}
//-------------------------------------------------------------------
// A c t i o n s
//-------------------------------------------------------------------
public override void RefreshDataItems()
{
listViewFacilitySession.RefreshFacilitySessions(GetParams());
}
public override void RefreshDataItem(SysId id)
{
listViewFacilitySession.RefreshFacilitySession(id);
}
public override void RemoveDataItem(SysId id)
{
listViewFacilitySession.RemoveItemById(id);
}
//-------------------------------------------------------------------
// Create item.
public override bool CanCreateItem()
{
if (ReadOnly) return false;
//if (!SecurityProfile.UserCanCreateItemType(Spm.DataItemType.FacilitySession)) return false;
return true;
}
public override void CreateItem()
{
if (!CanCreateItem()) return;
if (config.Mode == PanelMode.Search) return;
// Create new FacilitySession.
SpmForm_FacilitySession.Config configFacilitySession = new SpmForm_FacilitySession.Config();
using (var form = new SpmForm_FacilitySession(configFacilitySession))
{
if (form.ShowDialog() == DialogResult.OK)
{
/*RefreshDataItem(form.NewItemId);
InvokeItemCreatedEvent(Spm.ItemType.FacilitySession, form.NewItemId);*/
}
}
}
//-------------------------------------------------------------------
// View/Update item.
public override bool CanViewItem()
{
return true;
}
public override bool CanUpdateItem()
{
if (ReadOnly) return false;
/*bool canMaintainFacilitySessions = SecurityProfile.UserCanCreateItemType(Spm.ItemType.FacilitySession) || SecurityProfile.UserCanUpdateItemType(Spm.ItemType.FacilitySession);
if (!canMaintainFacilitySessions) return false;*/
return true;
}
public override void UpdateItem(bool updateItem = true)
{
//if (!CanUpdateItem()) return;
if (config.Mode == PanelMode.Search) return;
SpmFacilitySession facilitySession = SelectedFacilitySession;
if (SelectedItemCount != 1) return;
if (!CanUpdateItem() && !CanViewItem()) return;
if (!CanUpdateItem()) updateItem = false;
if (facilitySession == null)
{
MessageConsole.ShowMessageWarning("Failed to retrieve selected item");
return;
}
SpmForm_FacilitySession.Config configFacilitySession = new SpmForm_FacilitySession.Config();
configFacilitySession.FacilitySessionToUpdate = facilitySession;
configFacilitySession.ReadOnly = (config.ReadOnly || !updateItem);
using (SpmForm_FacilitySession formFacilitySession = new SpmForm_FacilitySession(configFacilitySession))
{
// Perform the update.
if (formFacilitySession.ShowDialog() == DialogResult.OK)
{
// FacilitySession has been updated.
RefreshDataItem(facilitySession.Id);
listViewFacilitySession.RefreshFacilitySession(facilitySession.Id);
InvokeItemUpdatedEvent(Spm.DataItemType.FacilitySession, facilitySession.Id);
}
}
}
//-------------------------------------------------------------------
// Delete item.
public override bool CanDeleteItem()
{
if (ReadOnly) return false;
//if (!SecurityProfile.UserCanRemoveItemType(Spm.ItemType.FacilitySession)) return false;
return true;
}
public override void DeleteItem()
{
if (!CanDeleteItem()) return;
if (config.Mode == PanelMode.Search) return;
if (SelectedItemCount != 1) return;
SpmFacilitySession facilitySession = SelectedFacilitySession;
if (facilitySession == null)
{
MessageConsole.ShowMessageWarning("Failed to retrieve item for deletion.");
return;
}
if (!DepartmentMgr.FacilitySessionCanBeDeleted(facilitySession))
{
MessageConsole.ShowMessageError("Unable to remove facilitySession - " + DepartmentMgr.ErrorStateMessage + ".");
return;
}
if (MessageConsole.ShowMessageConfirm("Are you sure that this facilitySession should be removed from the system?"))
{
if (DepartmentMgr.DeleteFacilitySession(facilitySession, DbUpdateInfo))
{
int selectIdx = listViewFacilitySession.SelectedIndex;
listViewFacilitySession.RemoveItemById(facilitySession.Id.ToString());
if (selectIdx >= listViewFacilitySession.ItemCount - 1) selectIdx--;
listViewFacilitySession.SelectedIndices.Clear();
listViewFacilitySession.SelectedIndices.Add(selectIdx);
}
else MessageConsole.ShowMessageError("Failed to remove facilitySession - " + DepartmentMgr.ErrorStateMessage + ".");
}
}
//-------------------------------------------------------------------
// Status change - Deactivate.
protected void DeactivateItem(object sender, EventArgs e) { DeactivateItem(); }
public void DeactivateItem()
{
SpmFacilitySession facilitySession = SelectedFacilitySession;
if (facilitySession != null && facilitySession.Status == SaStatus.Active)
{
facilitySession.Status = SaStatus.Inactive;
if (DepartmentMgr.UpdateFacilitySession(facilitySession, DbUpdateInfo))
{
RefreshDataItem(facilitySession.Id);
//InvokeItemUpdatedEvent(Spm.ItemType.FacilitySession, facilitySession.Id);
}
}
}
//-------------------------------------------------------------------
// Import data.
public override bool CanImportData()
{
return false;
}
public override void ImportData()
{
if (!CanImportData()) return;
}
//-------------------------------------------------------------------
// Export data.
public override bool CanExportData()
{
return false;
}
public override void ExportData()
{
}
//-------------------------------------------------------------------
// C o n t e x t M e n u
//-------------------------------------------------------------------
private SpmContextMenuStrip contextMenuStrip = new SpmContextMenuStrip();
private void RefreshContextMenu()
{
contextMenuStrip.Name = "FacilitySession";
contextMenuStrip.Items.Clear();
if (CanCreateItem())
contextMenuStrip.Items.Add("Create", null, CreateItem);
if (SysId.IsValid(listViewFacilitySession.SelectedItemId))
{
SpmFacilitySession facilitySession = SelectedFacilitySession;
if (facilitySession != null)
{
if (CanUpdateItem())
{
if (contextMenuStrip.Items.Count > 0)
contextMenuStrip.Items.Add(new ToolStripSeparator());
contextMenuStrip.Items.Add("Update", null, UpdateItem);
}
}
}
if (CanExportData() || CanImportData())
{
if (contextMenuStrip.Items.Count > 0)
contextMenuStrip.Items.Add(new ToolStripSeparator());
if (CanImportData())
contextMenuStrip.Items.Add("Import", null, ImportData);
if (CanExportData())
contextMenuStrip.Items.Add("Export", null, ExportData);
}
}
//-------------------------------------------------------------------
// C o n t r o l A c t i v i t y
//-------------------------------------------------------------------
protected override void SetControlActivity()
{
// FacilitySession list:
listViewFacilitySession.Enabled = Enabled;
SetControlsReadOnly();
//ToDo SpmPanel_FacilitySession > UpdateStats
}
protected override void SetControlsReadOnly()
{
}
//-------------------------------------------------------------------
// P o s i t i o n C o n t r o l s
//-------------------------------------------------------------------
protected override void PositionControls()
{
if (this.IsDesignerHosted()) return;
base.PositionControls();
}
//-------------------------------------------------------------------
// F o r m E v e n t s
//-------------------------------------------------------------------
//-------------------------------------------------------------------
}
//=======================================================================
}