Exemplo n.º 1
0
        public IEnumerable <ResourceUserRightModel> GetPermanentRightsOnDate(DateTime date,
                                                                             int?idRequestUser, string department, string unit, int?idResource)
        {
            var toDate   = date;
            var fromDate = date.Date.AddDays(1);

            return((from rightAssoc in _rightRepository.GetRequestUserRightAssocs()
                    join userAssoc in _rightRepository.GetRequestUserAssocs()
                    on rightAssoc.IdRequestUserAssoc equals userAssoc.IdRequestUserAssoc
                    join requestUser in _rightRepository.GetRequestUsers()
                    on userAssoc.IdRequestUser equals requestUser.IdRequestUser
                    join resourceRight in _rightRepository.GetResourceRights()
                    on rightAssoc.IdResourceRight equals resourceRight.IdResourceRight
                    where rightAssoc.IdRequestRightGrantType == 1 && rightAssoc.GrantedFrom < fromDate &&
                    (rightAssoc.GrantedTo == null || rightAssoc.GrantedTo > toDate) &&
                    (idRequestUser == null || userAssoc.IdRequestUser == idRequestUser.Value) &&
                    (department == null || requestUser.Department == department) &&
                    (unit == null || requestUser.Unit == unit) &&
                    (idResource == null || rightAssoc.ResourceRight.IdResource == idResource.Value)
                    group new { rightAssoc.GrantedFrom, rightAssoc.Descirption } by
                    new
            {
                requestUser.IdRequestUser,
                RequestUserSnp = requestUser.Snp,
                RequestUserDepartment = requestUser.Department,
                RequestUserUnit = requestUser.Unit,
                resourceRight.IdResourceRight,
                ResourceRightName = resourceRight.Name,
                ResourceRightDescription = resourceRight.Description,
                resourceRight.IdResource,
                ResourceName = resourceRight.Resource.Name,
                ResourceDescription = resourceRight.Resource.Description,
            }
                    into gs
                    select new ResourceUserRightModel
            {
                IdRequestUser = gs.Key.IdRequestUser,
                RequestUserSnp = gs.Key.RequestUserSnp,
                RequestUserDepartment = gs.Key.RequestUserDepartment,
                RequestUserUnit = gs.Key.RequestUserUnit,
                IdResourceRight = gs.Key.IdResourceRight,
                ResourceRightName = gs.Key.ResourceRightName,
                ResourceRightDescription = gs.Key.ResourceRightDescription,
                IdResource = gs.Key.IdResource,
                ResourceName = gs.Key.ResourceName,
                ResourceDescription = gs.Key.ResourceDescription,
                RightCategory = "Постоянное право",
                DateFrom = gs.Select(r => r.GrantedFrom).Min(),
                Description = gs.OrderByDescending(r => r.GrantedFrom).Select(r => r.Descirption).FirstOrDefault()
            }).ToList());
        }