Files
csharpcode/patientman/PatientMan/Forms/frmDuplicates.cs
2025-08-02 05:20:17 +07:00

101 lines
3.4 KiB
C#

using System;
using System.Collections.Generic;
using Datalib.EntityClasses;
using Datalib.HelperClasses;
using Datalib.RelationClasses;
using Datalib.DatabaseSpecific;
using System.Linq;
using Datalib.Linq;
using SD.LLBLGen.Pro.ORMSupportClasses;
using PatientMan.Classes.Templates;
using System.Windows.Forms;
namespace PatientMan.Forms
{
public partial class frmDuplicates : PatientMan.BasicForms.frmCommon
{
private EntityCollection<TblReferralsToEntity> EndExams = new EntityCollection<TblReferralsToEntity>();
public frmReferral callFrm { get; set; }
private List<clsEndDuplicates> result;
public frmDuplicates()
{
InitializeComponent();
}
private void LoadData_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
LoadData();
}
private void Delete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
BindingContext[result].EndCurrentEdit();
List<clsEndDuplicates> deleted = result.Where(q => q.Deleted == true).ToList();
foreach(var m in deleted)
{
TblReferralsToEntity remove = new TblReferralsToEntity(m.UniqueID);
adapter.FetchEntity(remove);
adapter.DeleteEntity(remove);
result.Remove(m);
}
this.grdClients.DataSource = null;
this.grdClients.DataSource = result;
callFrm.LoadData();
}
private void r_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (this.result.Count == 0)
{
return;
}
var PatientId = result[BindingContext[result].Position].PatientId;
var frm = new frmPatientInfo();
frm.PatientsCollection = new EntityCollection<TblPatientEntity>();
var PatientInfo = new TblPatientEntity(PatientId);
adapter.FetchEntity(PatientInfo);
frm.PatientsCollection.Add(PatientInfo);
frm.PatientInfo = PatientInfo;
frm.LoadData();
frm.gotoReferral();
frm.ShowDialog();
}
public override void LoadData()
{
EndExams.Clear();
adapter.FetchEntityCollection(EndExams, null);
var Dups = EndExams.OrderBy(q => q.PatientId).ThenBy(q => q.EndDate).GroupBy(q => q.PatientId).Select(g => new { PatientId = g.Key, Num = g.Count() }).ToList().Where(q => q.Num > 1).ToList();
result = (from p in EndExams
join q in Dups on p.PatientId equals q.PatientId
select new clsEndDuplicates
{
PatientId = p.PatientId,
EndDate = (DateTime)p.EndDate,
TypeId = p.TypeId,
UniqueID = p.UniqueKey
}).OrderBy(q => q.PatientId).ThenBy(q => q.EndDate).ToList();
for (int i = 1; i < result.Count - 1; i++)
{
if (result[i - 1].PatientId == result[i].PatientId && result[i - 1].TypeId == this.barEndType.EditValue.ToString().Trim())
{
result[i].Deleted = true;
}
}
this.grdClients.DataSource = result;
base.LoadData();
}
}
}