Exemplo n.º 1
0
        private IEnumerable <Models.ViewModel.DoctorStationInfo> GetDoctorStationInfo(int doctorId, int rootStationId)
        {
            var doc          = _db.vwCHIS_Code_Doctor.AsNoTracking().FirstOrDefault(m => m.DoctorId == doctorId);
            var cus          = _db.CHIS_Code_Customer.AsNoTracking().FirstOrDefault(m => m.CustomerID == doc.CustomerId);
            var dep          = _db.vwCHIS_Code_Rel_DoctorDeparts.AsNoTracking().Where(m => m.DoctorId == doc.DoctorId).OrderBy(m => m.StationID).ToList();
            var stationRoles = _db.CHIS_Sys_Rel_DoctorStationRoles.AsNoTracking().Where(m => m.DoctorId == doc.DoctorId).OrderBy(m => m.StationId).ToList();

            var roleids = stationRoles.Select(m => m.RoleId.Value).Distinct().ToList();
            var roles   = _db.CHIS_SYS_Role.AsNoTracking().Where(m => roleids.Contains(m.RoleID)).Select(m => new RoleItem
            {
                RoleId   = m.RoleID,
                RoleKey  = m.RoleKey,
                RoleName = m.RoleName
            }).ToList();

            var allowStations = UserMgr.GetAllowedStationsAndSubStationsQuery(_db, doctorId, rootStationId).ToList();
            var stationids    = stationRoles.Where(m => m.MyStationIsEnable == true).Select(m => m.StationId.Value).Distinct().ToList();

            //  stationids.AddRange(stationRoles.Select(m => m.StationId.Value).Distinct());
            stationids = (from item in stationids.Distinct()
                          where allowStations.Contains(item)
                          select item).ToList();
            var stations = _db.CHIS_Code_WorkStation.AsNoTracking().Where(m => stationids.Contains(m.StationID)).ToList();

            var model = new Models.ViewModel.DoctorInfo
            {
                Doctor   = doc,
                Customer = cus
            };

            model.InitialStationInfo(dep, stationRoles, roles, stations);
            return(model.StationInfos);
        }