private void AutoUploadDocument <T>(T document) where T : Document
        {
            using (var context = new ConnectContext())
            {
                var companyKey       = FetchClaimValue(ConnectConstants.ConnectCompanyKeyClaim);
                var existingDocument = FindDocuments <T>(context, document.RegistrationNumber, companyKey);

                bool hasExisting = existingDocument.Any();
                foreach (var item in existingDocument)
                {
                    if (item.Equals(document))
                    {
                        hasExisting = true;
                        break;
                    }
                }

                if (!hasExisting)
                {
                    document.UserId = GetUserId();
                    context.Set <T>().Add(document);

                    context.SaveChanges();

                    var serializedData = new SerializedData
                    {
                        DocumentType = typeof(T).FullName,
                        DocumentId   = document.Id,
                        Data         = document.SerializedData
                    };
                    context.Set <SerializedData>().Add(serializedData);
                    context.SaveChanges();
                }
            }
        }
 public ConnectUserNode GetUserNode()
 {
     using (var context = new ConnectContext())
     {
         return(GetUserNode(context));
     }
 }
        public void UploadTechnician(Technician technician)
        {
            using (var context = new ConnectContext())
            {
                var userId = GetUserId();
                technician.UserId   = userId;
                technician.Uploaded = DateTime.Now;

                var technicians  = context.Technicians.Where(c => c.UserId == userId);
                var technicianId = 0;

                var match = technicians.FirstOrDefault(c => string.Equals(c.Name, technician.Name) && string.Equals(c.Number, technician.Number));
                if (match != null)
                {
                    technicianId = match.Id;
                }

                technician.Id = technicianId;

                if (technicianId == 0)
                {
                    context.Set <Technician>().Add(technician);
                }
                else
                {
                    context.Entry(match).CurrentValues.SetValues(technician);
                }

                context.SaveChanges();
            }
        }
        private void AutoUploadReport <T>(T report) where T : BaseReport
        {
            using (var context = new ConnectContext())
            {
                var existingDocument = FindReports <T>(context, report.CentreName);

                bool hasExisting = existingDocument.Any();
                foreach (var item in existingDocument)
                {
                    if (item.Equals(report))
                    {
                        hasExisting = true;
                        break;
                    }
                }

                if (!hasExisting)
                {
                    report.Id            = 0;
                    report.User          = null;
                    report.ConnectUserId = GetUserId();
                    context.Set <T>().Add(report);

                    context.SaveChanges();
                }
            }
        }
        public ConnectUserNode GetUserNode(ConnectContext context)
        {
            var connectKeys = GetConnectKeys();
            var connectUser = context.UserNodes.Include(x => x.ConnectUser).FirstOrDefault(c => c.CompanyKey == connectKeys.CompanyKey && c.MachineKey == connectKeys.MachineKey);

            return(connectUser ?? new ConnectUserNode(connectKeys));
        }
        private void UpdateDocument <T>(T document) where T : Document
        {
            using (var context = new ConnectContext())
            {
                var companyKey       = FetchClaimValue(ConnectConstants.ConnectCompanyKeyClaim);
                var existingDocument = FindDocument <T>(context, document.RegistrationNumber, companyKey);

                if (existingDocument != null)
                {
                    document.Id     = existingDocument.Id;
                    document.UserId = GetUserId();

                    context.Entry(existingDocument).CurrentValues.SetValues(document);
                    context.SaveChanges();

                    var documentType   = typeof(T).FullName;
                    var serializedData = context.SerializedData.FirstOrDefault(c => c.DocumentId == document.Id && c.DocumentType == documentType);
                    if (serializedData != null)
                    {
                        serializedData.Data = document.SerializedData;
                        context.SaveChanges();
                    }
                }
            }
        }
 public ConnectUser GetConnectUser()
 {
     using (var context = new ConnectContext())
     {
         var connectKeys = GetConnectKeys();
         return(GetUser(context, connectKeys.CompanyKey, connectKeys.MachineKey));
     }
 }
Example #8
0
        public ConnectServiceHost(params Uri[] addresses)
            : base(typeof(ConnectService), addresses)
        {
            Database.SetInitializer(new Initializer());

            using (var context = new ConnectContext())
            {
                context.Database.CreateIfNotExists();
            }
        }
Example #9
0
        public void UploadCustomerContact(CustomerContact customerContact)
        {
            using (var context = new ConnectContext())
            {
                customerContact.UserId   = GetUserId();
                customerContact.Uploaded = DateTime.Now;

                context.CustomerContacts.Add(customerContact);
                context.SaveChanges();
            }
        }
 private static IQueryable <T> FindReports <T>(ConnectContext context, string tachoCentreName) where T : BaseReport
 {
     return(context.Set <T>()
            .Where(doc => doc.CentreName == tachoCentreName)
            .OrderByDescending(doc => doc.Created)
            .Join(context.UserNodes, rep => rep.ConnectUserId, user => user.ConnectUser.Id, (doc, user) => new
     {
         user.CompanyKey,
         Report = doc
     })
            .Select(a => a.Report));
 }
        private void UploadReport <T>(T report) where T : BaseReport
        {
            using (var context = new ConnectContext())
            {
                report.Id            = 0;
                report.User          = null;
                report.ConnectUserId = GetUserId();
                context.Set <T>().Add(report);

                context.SaveChanges();
            }
        }
        private static Exception IsAuthorized(IConnectKeys connectKeys)
        {
            Exception result = null;

            if (!LicenseManager.IsValid(connectKeys.LicenseKey.ToString()))
            {
                return(new FaultException("The license key is invalid or has expired."));
            }

            try
            {
                using (var context = new ConnectContext())
                {
                    var company = context.Users.FirstOrDefault(c => c.CompanyKey == connectKeys.CompanyKey);
                    if (company == null)
                    {
                        result = new FaultException("Your computer is not currently authorized to use Connect at this time.");
                    }

                    if (result == null)
                    {
                        var connectUserNode = context.UserNodes.FirstOrDefault(c => c.MachineKey == connectKeys.MachineKey && c.CompanyKey == connectKeys.CompanyKey);
                        if (connectUserNode == null)
                        {
                            var connectUser = context.Users.FirstOrDefault(c => c.CompanyKey == connectKeys.CompanyKey);
                            if (connectUser == null)
                            {
                                result = new FaultException("Your computer is not currently authorized to use Connect at this time.");
                                return(result);
                            }

                            context.UserNodes.Add(new ConnectUserNode(connectKeys)
                            {
                                IsAuthorized = true, ConnectUser = connectUser
                            });
                            context.SaveChanges();
                            return(null);
                        }
                        if (!connectUserNode.IsAuthorized)
                        {
                            result = new FaultException("Your computer is not currently authorized to use Connect at this time.");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                result = new FaultException("An unexcepted error occurred; " + ex.Message);
            }

            return(result);
        }
Example #13
0
 public void UploadDetailedException(DetailedException detailedException)
 {
     using (var context = new ConnectContext())
     {
         var existing = context.DetailedExceptions.Any(c => c.ExceptionDetails == detailedException.ExceptionDetails);
         if (!existing)
         {
             detailedException.UserId = GetUserId();
             context.DetailedExceptions.Add(detailedException);
             context.SaveChanges();
         }
     }
 }
 private static IQueryable <T> FindDocuments <T>(ConnectContext context, string registrationNumber, string companyKey) where T : Document
 {
     return(context.Set <T>()
            .Where(doc => doc.RegistrationNumber == registrationNumber)
            .OrderByDescending(doc => doc.Created)
            .Join(context.UserNodes, doc => doc.UserId, user => user.ConnectUser.Id, (doc, user) => new
     {
         user.CompanyKey,
         Document = doc
     })
            .Where(b => b.CompanyKey == companyKey)
            .Select(a => a.Document));
 }
 public int GetUserId()
 {
     using (var context = new ConnectContext())
     {
         var connectKeys = GetConnectKeys();
         var user        = GetUser(context, connectKeys.CompanyKey, connectKeys.MachineKey);
         if (user != null)
         {
             return(user.Id);
         }
         return(-1);
     }
 }
        public void UploadWorkshopSettings(WorkshopSettings workshopSettings)
        {
            using (var context = new ConnectContext())
            {
                workshopSettings.Id       = 0;
                workshopSettings.UserId   = GetUserId();
                workshopSettings.Uploaded = DateTime.Now;

                if (workshopSettings.Created == default(DateTime) || workshopSettings.Created == _sqlDefaultDateTime)
                {
                    workshopSettings.Created = DateTime.Now;
                }

                context.Set <WorkshopSettings>().Add(workshopSettings);
                context.SaveChanges();
            }
        }
        private void UploadDocument <T>(T document) where T : Document
        {
            using (var context = new ConnectContext())
            {
                document.UserId = GetUserId();
                context.Set <T>().Add(document);

                context.SaveChanges();

                var serializedData = new SerializedData
                {
                    DocumentType = typeof(T).FullName,
                    DocumentId   = document.Id,
                    Data         = document.SerializedData
                };
                context.Set <SerializedData>().Add(serializedData);
                context.SaveChanges();
            }
        }
Example #18
0
        public CustomerContact[] FindExistingCustomerContact(string customerName)
        {
            if (string.IsNullOrEmpty(customerName))
            {
                return(null);
            }

            customerName = customerName.Trim().ToLower().Replace(" ", "").Replace(".", "").Replace("-", "");

            if (customerName.Length < 3)
            {
                return(null);
            }

            using (var context = new ConnectContext())
            {
                var a = context.CustomerContacts.Where(c => c.Name != null && c.Name.Trim().ToLower().Replace(" ", "").Replace(".", "").Replace("-", "").StartsWith(customerName)).ToArray();
                return(a);
            }
        }
        public object Find(string registrationNumber, DocumentType documentType)
        {
            if (string.IsNullOrEmpty(registrationNumber))
            {
                throw new FaultException("Registration number was not supplied");
            }

            registrationNumber = registrationNumber.ToUpper();

            var companyKey = FetchClaimValue(ConnectConstants.ConnectCompanyKeyClaim);

            using (var context = new ConnectContext())
            {
                if ((documentType & DocumentType.Tachograph) == DocumentType.Tachograph)
                {
                    var tachographDocument = FindDocument <TachographDocument>(context, registrationNumber, companyKey);
                    if (tachographDocument != null)
                    {
                        return(tachographDocument);
                    }
                }

                if ((documentType & DocumentType.Undownloadability) == DocumentType.Undownloadability)
                {
                    var undownloadabilityDocument = FindDocument <UndownloadabilityDocument>(context, registrationNumber, companyKey);
                    if (undownloadabilityDocument != null)
                    {
                        return(undownloadabilityDocument);
                    }
                }

                if ((documentType & DocumentType.LetterForDecommissioning) == DocumentType.LetterForDecommissioning)
                {
                    return(FindDocument <LetterForDecommissioningDocument>(context, registrationNumber, companyKey));
                }

                return(null);
            }
        }
 private static Document FindDocument <T>(ConnectContext context, string registrationNumber, string companyKey) where T : Document
 {
     return(FindDocuments <T>(context, registrationNumber, companyKey).FirstOrDefault());
 }