示例#1
0
        public static async Task <BaseModel> GetDocumentAsync(this ConnectContext context, DocumentType documentType, int id)
        {
            IQueryable <BaseModel> set = null;

            switch (documentType)
            {
            case DocumentType.Tachograph:
                set = context.Set <TachographDocument>();
                break;

            case DocumentType.Undownloadability:
                set = context.Set <UndownloadabilityDocument>();
                break;

            case DocumentType.LetterForDecommissioning:
                set = context.Set <LetterForDecommissioningDocument>();
                break;

            case DocumentType.QCReport:
                set = context.Set <QCReport>();
                break;

            case DocumentType.QCReport6Month:
                set = context.Set <QCReport6Month>();
                break;
            }

            if (set != null)
            {
                return(await set.FirstOrDefaultAsync(document => document.Id == id));
            }

            return(null);
        }
示例#2
0
        public static async Task <DirectUploadDocument> GetDirectUploadDocumentAsync(this ConnectContext context, ConnectUser connectUser, int documentId)
        {
            var applicationUserManager = GetApplicationUserManager();
            var userRoles = applicationUserManager.GetRoles(connectUser.Id);

            if (userRoles.Any(role => string.Equals(ConnectRoles.Admin, role)))
            {
                return(await(from document in context.Set <DirectUploadDocument>()
                             where document.Deleted == null && document.Id == documentId
                             select document).FirstOrDefaultAsync());
            }

            return(await(from document in context.Set <DirectUploadDocument>()
                         where document.Deleted == null && document.UserId == connectUser.Id && document.Id == documentId
                         select document).FirstOrDefaultAsync());
        }
示例#3
0
        public static async Task <IEnumerable <DirectUploadDocument> > GetDirectUploadDocumentsAsync(this ConnectContext context, ConnectUser connectUser)
        {
            var applicationUserManager = GetApplicationUserManager();

            IQueryable <DirectUploadDocument> documents;
            var userRoles = applicationUserManager.GetRoles(connectUser.Id);

            if (userRoles.Any(role => string.Equals(ConnectRoles.Admin, role)))
            {
                documents = from document in context.Set <DirectUploadDocument>()
                            where document.Deleted == null
                            select document;
            }
            else
            {
                documents = from document in context.Set <DirectUploadDocument>()
                            where document.Deleted == null && document.UserId == connectUser.Id
                            select document;
            }

            return(await documents.ToListAsync());
        }
示例#4
0
        private static IEnumerable <T> GetDocuments <T>(ConnectContext context, ConnectUser connectUser, DateTime?from, DateTime?to) where T : Document
        {
            var result = new List <T>();

            var documentCount = context.Set <T>().Count();

            if (documentCount > 0)
            {
                var applicationUserManager = GetApplicationUserManager();

                List <T> documents = null;
                var      userRoles = applicationUserManager.GetRoles(connectUser.Id);

                if (userRoles.Any(role => string.Equals(ConnectRoles.Admin, role)))
                {
                    documents = (from document in context.Set <T>().SqlQuery(FastQueryHelper.GetSqlQueryFor <T>(true))
                                 where document.Deleted == null
                                 select document).ToList();
                }
                else if (userRoles.Any(role => string.Equals(ConnectRoles.TachographCentre, role)))
                {
                    documents = (from document in context.Set <T>().SqlQuery(FastQueryHelper.GetSqlQueryFor <T>(true))
                                 where document.Deleted == null && document.UserId == connectUser.Id
                                 select document).ToList();
                }
                else if (userRoles.Any(role => string.Equals(ConnectRoles.TachographCentre, role)) && connectUser.CustomerContact != null)
                {
                    documents = (from linkedVehicle in context.LinkedVehicles.Include(x => x.CustomerContact).Where(v => v.CustomerContact.Id == connectUser.CustomerContact.Id).DefaultIfEmpty()
                                 from document in context.Set <T>().Where(d => d.RegistrationNumber == linkedVehicle.VehicleRegistrationNumber).DefaultIfEmpty()
                                 select document).ToList();
                }

                if (from != null && to != null && documents != null)
                {
                    foreach (var document in documents.Where(d => d != null))
                    {
                        var inspectionDate = document.InspectionDate.GetValueOrDefault();
                        if (inspectionDate != default(DateTime))
                        {
                            var nextDueDate = inspectionDate.AddYears(2);
                            if (nextDueDate >= from.GetValueOrDefault() && nextDueDate <= to.GetValueOrDefault())
                            {
                                result.Add(document);
                            }
                        }
                    }
                }

                var users = context.Users.ToList().Where(u => documents.Any(d => d.UserId == u.Id)).ToList();

                documents.ForEach(document =>
                {
                    var user = users.FirstOrDefault(u => u.Id == document.UserId);
                    if (user != null)
                    {
                        document.CompanyName = user.CompanyKey;
                    }
                });
            }

            return(result);
        }