private Officer GetManager(List <OfficerEntity> staffs, OfficerEntity stf)
        {
            if (stf.Manager == null)
            {
                return(null);
            }
            var mng     = stf.Manager;
            var officer = EntityConvertorUtility.ConvertOfficer(mng);

            return(officer);
        }
        public IEnumerable <Assignment> ListAssignments(bool withDetail)
        {
            List <Assignment> list = new List <Assignment>();

            using (var ctx = new CaseHandlingDatabaseContext())
            {
                List <AssignmentEntity> results = (from co in ctx.AssignmentEntities select co).ToList();
                foreach (var res in results)
                {
                    var co = EntityConvertorUtility.ConvertCaseOfficer(res);
                    list.Add(co);
                    if (withDetail)
                    {
                        if (!res.CaseReference.IsLoaded)
                        {
                            res.CaseReference.Load();
                        }
                        co.Case = EntityConvertorUtility.ConvertCaseInfo(res.Case);

                        if (!res.OfficerReference.IsLoaded)
                        {
                            res.OfficerReference.Load();
                        }

                        co.Officer = EntityConvertorUtility.ConvertOfficer(res.Officer);
                        // loads the officer hierarchy to management
                        Officer       officer = co.Officer;
                        OfficerEntity oe      = res.Officer;
                        while (oe.ManagerReference != null)
                        {
                            if (!oe.ManagerReference.IsLoaded)
                            {
                                oe.ManagerReference.Load();
                            }
                            if (oe.Manager == null)
                            {
                                break;
                            }

                            officer.Manager = EntityConvertorUtility.ConvertOfficer(oe.Manager);
                            oe      = oe.Manager;
                            officer = officer.Manager;
                        }
                    }
                }
            }
            return(list);
        }
        public IEnumerable <CaseInfo> ListCases()
        {
            var list = new List <CaseInfo>();

            using (var ctx = new Server.System.Repository.DataAccess.CaseHandlingDatabaseContext())
            {
                var result = (from c in ctx.CaseEntities
                              select c).ToList();

                foreach (var c in result)
                {
                    list.Add(EntityConvertorUtility.ConvertCaseInfo(c));
                }
            }
            return(list);
        }
        private void Fill(List <Officer> list, List <OfficerEntity> staffs)
        {
            foreach (var stf in staffs)
            {
                var officer = EntityConvertorUtility.ConvertOfficer(stf);
                officer.Manager = GetManager(staffs, stf);
                Officer mng = officer.Manager;
                while (mng != null)
                {
                    mng.Manager = GetManager(staffs, staffs.First(x => x.ID == mng.Identifier));
                    mng         = mng.Manager;
                }
                list.Add(officer);
            }

            foreach (var officer in list)
            {
                FillChilds(list, officer, officer);
            }
        }