private void AccountsAdditionalColumnsComponent_Change(object sender, ListItemsEventArgs<AccountDataRecordAdditionalColumn> e)
     => localCollection.UpdateCollection(e);
 private void AccountsImportQueueRecordsComponent_Change(object sender, ListItemsEventArgs<ImportQueueRecord> e)
     => localCollection.UpdateCollection(e);
        private void OnWorkerEmployeeChanged(object s, ListItemsEventArgs<Employee> e)
        {
            if (e.Action == ChangeAction.Add || e.Action == ChangeAction.Change)
            {
                var items = e.Action == ChangeAction.Add
                    ? e.Items.Select(i => 
                    {
                        var empVM = GetViewModelForEmployee(i);
                        employees.Add(empVM);
                        empVM.OnEditCommandExecuted += EmployeeViewModelOnEditCommandExecuted;
                        return empVM;
                    }).ToList()
                    : e.Items.Join(employees, i => i.Id, n => n.Employee.Id, (i, n) => new { New = i, Old = n }).Select(i => 
                    {
                        i.Old.CopyObjectFrom(GetViewModelForEmployee(i.New));
                        return i.Old;
                    }).ToList();

                items.ToList().ForEach(empVM =>
                {
                    var fullItems = departments.AsEnumerable().Traverse(d => d.Childs).ToArray();
                    var departmentItemForItem = fullItems.FirstOrDefault(d => d.Data.Department.Id == empVM?.Department?.Id);
                    var staffingItemWithThisItem = fullItems.SelectMany(i => i.Data.Staffing).Where(sd => sd.Staffing?.Id == empVM.Employee.Stuffing?.Id).ToList();
                    var employeeItemWithThisItem = fullItems.SelectMany(i => i.Data.Staffing).Where(sd => sd.Employee?.Employee?.Id == empVM.Employee.Id).ToList();
                    employeeItemWithThisItem.ForEach(i => i.Employee = null);
                    
                    if (staffingItemWithThisItem.Count == 1)
                    {
                        staffingItemWithThisItem.ForEach(i => i.Employee = empVM);
                    }
                    else 
                    if (departmentItemForItem != null)
                    {
                        staffingItemWithThisItem.ForEach(i => i.Employee = null);
                        departmentItemForItem.Data.Staffing.Add(new EmployeeAndStaffingData(this)
                        {
                            Staffing = empVM.Employee.Stuffing,
                            Employee = empVM
                        });
                    }
                });
            }
            else if (e.Action == ChangeAction.Remove)
            { 
                e.Items.Join(employees, i => i.Id, n => n.Employee.Id, (i, n) => n).ToList().ForEach(i => 
                {
                    var fullItems = departments.AsEnumerable().Traverse(d => d.Childs).ToArray();
                    var treeItemWithThisItem = fullItems.FirstOrDefault(d => d.Data.Staffing.Any(sd => sd.Employee.Employee.Id == i.Employee.Id));
                    if (treeItemWithThisItem != null)
                    {
                        var existedStaffing = treeItemWithThisItem.Data.Staffing.FirstOrDefault(sd => sd.Employee.Employee.Id == i.Employee.Id);
                        existedStaffing.Employee = null;
                    }
                    employees.Remove(i);
                    i.OnEditCommandExecuted -= EmployeeViewModelOnEditCommandExecuted;
                });
            }
            CheckForFakeEmployee();
            OnEmployeesChanged?.Invoke(this, e);
        }
        private void OnWorkerStaffingChanged(object s, ListItemsEventArgs<StaffingService.Staffing> e)
        {
            var fullItems = departments.AsEnumerable().Traverse(d => d.Childs).ToArray();
            if (e.Action == ChangeAction.Add)
            { 
                e.Items.ToList().ForEach(i =>
                {
                    staffing.Add(i);
                    var departmentItemForItem = fullItems.FirstOrDefault(d => d.Data.Department.Id == i.DepartmentId);
                    var staffingtemWithThisItem = fullItems.Where(d => d.Data.Staffing.Any(sd => sd.Staffing.Id == i.Id)).ToArray();
                    foreach (var itm in staffingtemWithThisItem)
                    {
                        var itemsToRemove = itm.Data.Staffing.Where(sd => sd.Staffing.Id == i.Id).ToArray();
                        foreach (var itm2 in itemsToRemove)
                            itm.Data.Staffing.Remove(itm2);
                    }

                    if (departmentItemForItem != null)
                    {
                        departmentItemForItem.Data.Staffing.Add(new EmployeeAndStaffingData(this)
                        {
                            Staffing = i,
                            Employee = employees.FirstOrDefault(e2 => e2.Employee.Stuffing?.Id == i.Id)
                        });
                    }
                });
            }
            else if (e.Action == ChangeAction.Change)
            { 
                e.Items.Join(staffing, i => i.Id, n => n.Id, (i, n) => new { New = i, Old = n }).ToList().ForEach(i => 
                {
                    i.New.CopyObjectTo(i.Old);

                    var departmentItemForItem = fullItems.FirstOrDefault(d => d.Data.Department.Id == i.Old.DepartmentId);
                    var staffingtemWithThisItem = fullItems.Where(d => d.Data.Staffing.Any(sd => sd.Staffing.Id == i.Old.Id)).ToArray();
                    foreach(var itm in staffingtemWithThisItem)
                    {
                        var itemsToRemove = itm.Data.Staffing.Where(sd => sd.Staffing.Id == i.Old.Id).ToArray();
                        foreach(var itm2 in itemsToRemove)
                            itm.Data.Staffing.Remove(itm2);
                    }

                    if (departmentItemForItem != null)
                    {
                        departmentItemForItem.Data.Staffing.Add(new EmployeeAndStaffingData(this)
                        {
                            Staffing = i.New,
                            Employee = employees.FirstOrDefault(e2 => e2.Employee.Stuffing?.Id == i.Old.Id)
                        });
                    }
                });
            }
            else if (e.Action == ChangeAction.Remove)
            { 
                e.Items.Join(staffing, i => i.Id, n => n.Id, (i, n) => n).ToList().ForEach(i =>
                {
                    var treeItemWithThisItem = fullItems.FirstOrDefault(d => d.Data.Staffing.Any(sd => sd.Staffing.Id == i.Id));
                    if (treeItemWithThisItem != null)
                    {
                        var existedStaffing = treeItemWithThisItem.Data.Staffing.FirstOrDefault(sd => sd.Staffing.Id == i.Id);
                        if (existedStaffing != null)
                            treeItemWithThisItem.Data.Staffing.Remove(existedStaffing);
                    }
                    staffing.Remove(i);
                });
            }
            OnStaffingChanged?.Invoke(this, e);
        }
        private void OnWorkerDepartmentsChanged(object sender, ListItemsEventArgs<Department> e)
        {
            if (new[] { ChangeAction.Add, ChangeAction.Change }.Contains(e.Action))
                foreach (var d in e.Items)
                {
                    if (d.Id != 0)
                    {
                        Department depForUpdate = null;
                        var existed = departments.AsEnumerable().Traverse(i => i.Childs).FirstOrDefault(i => i.Data.Department.Id == d.Id);
                        if (existed != null)
                        {
                            existed.Data.Department.CopyObjectFrom(d);
                            depForUpdate = existed.Data.Department;
                        }
                        else
                        {
                            var existedParent = departments.AsEnumerable().Traverse(i => i.Childs).FirstOrDefault(i => i.Data.Department.Id == d.ParentId);
                            if (existedParent != null)
                            {
                                var newDep = new DepartmentEditViewModel() { Data = GetStaffingDataForDepartment(d), Parent = existedParent, Owner = this };
                                var existedChildsInTop = departments.Where(i => i.Data.Department.ParentId == d.Id);
                                foreach (var c in existedChildsInTop)
                                {
                                    c.Parent = newDep;
                                    newDep.Childs.Add(c);
                                }
                                existedParent.Childs.Add(newDep);
                                depForUpdate = newDep.Data.Department;
                            }
                            else
                            {
                                var depVM = new DepartmentEditViewModel() { Data = GetStaffingDataForDepartment(d), Parent = this, Owner = this };
                                departments.Add(depVM);
                                depForUpdate = depVM.Data.Department;
                            }
                        }

                        if (depForUpdate != null)
                            employees
                                .Where(e2 => e2.Employee.Stuffing?.DepartmentId == depForUpdate.Id)
                                .ToList()
                                .ForEach(emp => emp.Department = depForUpdate);

                    }
                }
            else
                foreach (var d in e.Items)
                    if (d.Id != 0)
                    {
                        var existed = departments.AsEnumerable().Traverse(i => i.Childs).FirstOrDefault(i => i.Data.Department.Id == d.Id);
                        if (existed != null)
                            existed.Parent?.Childs.Remove(existed);

                        employees
                            .Where(e2 => e2.Employee.Stuffing?.DepartmentId == d.Id)
                            .ToList()
                            .ForEach(emp => emp.Department = null);
                    }

            OnDepartmentsChanged?.Invoke(this, e);
        }
        private void OnWorkerRightsChanged(object s, ListItemsEventArgs<Right> e)
        {
            if (e.Action == ChangeAction.Add)
                e.Items.ToList().ForEach(i => rights.Add(i));
            else if (e.Action == ChangeAction.Change)
                e.Items.Join(rights, i => i.Id, n => n.Id, (i, n) => new { New = i, Old = n }).ToList().ForEach(i => i.New.CopyObjectTo(i.Old));
            else if (e.Action == ChangeAction.Remove)
                e.Items.Join(rights, i => i.Id, n => n.Id, (i, n) => n).ToList().ForEach(i => rights.Remove(i));

            OnRightsChanged?.Invoke(this, e);
        }
 private void AccountsPhoneMarksComponent_Change(object sender, ListItemsEventArgs<AccountPhoneMark> e)
  => localCollection.UpdateCollection(e);
 private void AccountsSeriesOfNumbersComponent_Change(object sender, ListItemsEventArgs<AccountSeriesOfNumbersRecord> e)
 {
     localCollection.UpdateCollection(e);
 }
Exemple #9
0
        private void OnWorkerVacationFunctionalGroupChanged(object sender, ListItemsEventArgs<VacationService.VacationFunctionalGroup> e)
        {
            if (new[] { ChangeAction.Add, ChangeAction.Change }.Contains(e.Action))
            {
                foreach (var d in e.Items)
                {
                    if (d.Id != 0)
                    {
                        var existedVacationFunctionalGroup = vacationFunctionalGroups.FirstOrDefault(l => l.Group.Id == d.Id);
                        if (existedVacationFunctionalGroup != null)
                        {
                            existedVacationFunctionalGroup.Group.CopyObjectFrom(d);
                        }
                        else
                        {
                            var vm = new VacationFunctionalGroupViewModel(d, this);
                            vm.PropertyChanged += (_, e2) => 
                            {
                                if (e2.PropertyName == nameof(vm.IsChecked))
                                {
                                    EmployeeVacationsCollectionView.Refresh();
                                }
                            };
                            vacationFunctionalGroups.Add(vm);
                        }
                    }
                }
            }
            else
            {
                foreach (var d in e.Items)
                {
                    if (d.Id != 0)
                    {
                        var existedVacationFunctionalGroup = vacationFunctionalGroups.FirstOrDefault(l => l.Group.Id == d.Id);
                        if (existedVacationFunctionalGroup != null)
                            vacationFunctionalGroups.Remove(existedVacationFunctionalGroup);
                    }
                }
            }

            OnVacationFunctionalGroupChanged?.Invoke(this, e);
        }
Exemple #10
0
        private void OnWorkerVacationChanged(object sender, ListItemsEventArgs<VacationService.Vacation> e)
        {
            if (new[] { ChangeAction.Add, ChangeAction.Change }.Contains(e.Action))
            {
                foreach (var d in e.Items)
                {
                    if (d.Id != 0)
                    {
                        var existedVacation = vacations.FirstOrDefault(l => l.Id == d.Id);
                        if (existedVacation != null)
                        {
                            existedVacation.CopyObjectFrom(d);
                        }
                        else
                        {
                            vacations.Add(d);
                        }
                    }
                }
            }
            else
            {
                foreach (var d in e.Items)
                {
                    if (d.Id != 0)
                    {
                        var existedVacation = vacations.FirstOrDefault(l => l.Id == d.Id);
                        if (existedVacation != null)
                            vacations.Remove(existedVacation);
                    }
                }
            }

            OnVacationChanged?.Invoke(this, e);
        }
Exemple #11
0
 private void OnRightsChanged(object semder, ListItemsEventArgs<StaffingService.Right> e) => RunUnderDispatcher(new Action(() => UpdateRights()));
 private void OnRightsChanged(object semder, ListItemsEventArgs<StaffingService.Right> e)
 {
     CanManageVacations = GetCanManageVacationsProperty();
 }
        public ListItemCollection GetListItems(ListItemsEventArgs args)
        {
            if (args.KBEntry != null && args.KBEntry.Style == KBEntryStyle.ListSQL)
            {
                string sql = args.KBEntry.Value;
                //if (string.IsNullOrEmpty(sql) == false)
                //{
                //    //using (IDbConnection conn = DataHelper.CreateConnection())
                //    //{
                //    //    conn.Open();
                //    //    using (IDbCommand cmd = conn.CreateCommand())
                //    //    {
                //    //        cmd.CommandText = sql;
                //    //        IDataReader reader = cmd.ExecuteReader();
                //    //        ListItemCollection list = CreateList(reader);
                //    //        reader.Close();
                //    //        return list;
                //    //    }//using
                //    //}//using
                //}//if
            }//if

            if (_ListSourceSQLs == null)
            {
                _ListSourceSQLs = new Dictionary<string, string>();
                try
                {
                    _ListSourceSQLs["advancedoclist"] = "Select userid listname, id listcode from userinfo where userflag='" + Share_Class.User.userflag + "' ";
                    _ListSourceSQLs["reportdoclist"] = "Select userid listname, id listcode from userinfo where userflag='" + Share_Class.User.userflag + "' ";
                    _ListSourceSQLs["radio_doctorlist"] = "Select userid listname, id listcode from userinfo where userflag='" + Share_Class.User.userflag + "' ";
                }
                catch { }
                _ListSourceSQLs["sqdeplist"] = "Select sqdep listname, id listcode From sqdep order by ID";
                _ListSourceSQLs["doctorlist"] = "Select userid listname, id listcode From EMR_SysCode Where SysType='0012' Order by SysDesc";
                _ListSourceSQLs["wardnolist"] = "Select userid listname, id listcode From EMR_SysCode Where SysType='0013' Order by SysDesc";
                _ListSourceSQLs["machinetype"] = "Select userid listname, id listcode From EMR_SysCode Where SysType='0014' Order by SysDesc";
                _ListSourceSQLs["diseasetypelist"] = "Select userid listname, id listcode From EMR_SysCode Where SysType='0015' Order by SysDesc";
                _ListSourceSQLs["reportdisease"] = "Select userid listname, id listcode From EMR_SysCode Where SysType='0016' Order by SysDesc";
                _ListSourceSQLs["otherchecklist"] = "Select userid listname, id listcode From EMR_SysCode Where SysType='0017' Order by SysDesc";
                _ListSourceSQLs["modalitylist"] = "Select userid listname, id listcode From EMR_SysCode Where SysType='0018' Order by SysDesc";
                _ListSourceSQLs["checktypelist"] = "Select userid listname, id listcode From EMR_SysCode Where SysType='0019' Order by SysDesc";
                _ListSourceSQLs["dengjipartlist"] = "Select userid listname, id listcode From EMR_SysCode Where SysType='0020' Order by SysDesc";
                _ListSourceSQLs["checkposlist"] = "Select userid listname, id listcode From EMR_SysCode Where SysType='0021' Order by SysDesc";

            }
            string sourceName = args.SourceName;
            if (sourceName == null)
            {
                sourceName = "";
            }
            sourceName = sourceName.Trim().ToUpper();
            if (_ListSourceSQLs.ContainsKey(sourceName))
            {
                string sql = _ListSourceSQLs[sourceName];
                //using (IDbConnection conn = DataHelper.CreateConnection())
                //{
                //    conn.Open();
                //    using (IDbCommand cmd = conn.CreateCommand())
                //    {
                //        cmd.CommandText = sql;
                //        IDataReader reader = cmd.ExecuteReader();
                //        ListItemCollection list = CreateList(reader);
                //        reader.Close();
                //        return list;
                //    }//using
                //}//using
            }//if
            return null;
        }