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 EndExams = new EntityCollection(); public frmReferral callFrm { get; set; } private List 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 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(); 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(); } } }