Beispiel #1
0
        ///<summary>Efficiently queries DB to fill all in memory lists for all jobs passed in.</summary>
        public static void FillInMemoryLists(List <Job> listJobsAll)
        {
            //No need for remoting call here.
            List <long> jobNums = listJobsAll.Select(x => x.JobNum).ToList();
            Dictionary <long, List <JobLink> >   listJobLinksAll   = JobLinks.GetJobLinksForJobs(jobNums).GroupBy(x => x.JobNum).ToDictionary(x => x.Key, x => x.ToList());
            Dictionary <long, List <JobNote> >   listJobNotesAll   = JobNotes.GetJobNotesForJobs(jobNums).GroupBy(x => x.JobNum).ToDictionary(x => x.Key, x => x.ToList());
            Dictionary <long, List <JobReview> > listJobReviewsAll = JobReviews.GetJobReviewsForJobs(jobNums).GroupBy(x => x.JobNum).ToDictionary(x => x.Key, x => x.ToList());
            Dictionary <long, List <JobQuote> >  listJobQuotesAll  = JobQuotes.GetJobQuotesForJobs(jobNums).GroupBy(x => x.JobNum).ToDictionary(x => x.Key, x => x.ToList());
            Dictionary <long, List <JobLog> >    listJobLogsAll    = JobLogs.GetJobLogsForJobs(jobNums).GroupBy(x => x.JobNum).ToDictionary(x => x.Key, x => x.ToList());

            for (int i = 0; i < listJobsAll.Count; i++)
            {
                Job job = listJobsAll[i];
                if (!listJobLinksAll.TryGetValue(job.JobNum, out job.ListJobLinks))
                {
                    job.ListJobLinks = new List <JobLink>();                 //empty list if not found
                }
                if (!listJobNotesAll.TryGetValue(job.JobNum, out job.ListJobNotes))
                {
                    job.ListJobNotes = new List <JobNote>();                 //empty list if not found
                }
                if (!listJobReviewsAll.TryGetValue(job.JobNum, out job.ListJobReviews))
                {
                    job.ListJobReviews = new List <JobReview>();                 //empty list if not found
                }
                if (!listJobQuotesAll.TryGetValue(job.JobNum, out job.ListJobQuotes))
                {
                    job.ListJobQuotes = new List <JobQuote>();                 //empty list if not found
                }
                if (!listJobLogsAll.TryGetValue(job.JobNum, out job.ListJobLogs))
                {
                    job.ListJobLogs = new List <JobLog>();                 //empty list if not found
                }
            }
        }
Beispiel #2
0
        ///<summary></summary>
        public static void Delete(long bugId)
        {
            if (RemotingClient.RemotingRole == RemotingRole.ClientWeb)
            {
                Meth.GetVoid(MethodBase.GetCurrentMethod(), bugId);
                return;
            }
            JobLinks.DeleteForType(JobLinkType.Bug, bugId);
            //Create an ODThread so that we can safely change the database connection settings without affecting the calling method's connection.
            ODThread odThread = new ODThread(new ODThread.WorkerDelegate((ODThread o) => {
                //Always set the thread static database connection variables to set the serviceshq db conn.
#if DEBUG
                new DataConnection().SetDbT("localhost", "bugs", "root", "", "", "", DatabaseType.MySql, true);
#else
                new DataConnection().SetDbT("server", "bugs", "root", "", "", "", DatabaseType.MySql, true);
#endif
                Crud.BugCrud.Delete(bugId);
            }));

            odThread.AddExceptionHandler(new ODThread.ExceptionDelegate((Exception e) => { }));            //Do nothing
            odThread.Name = "bugsDeleteThread";
            odThread.Start(true);
            if (!odThread.Join(THREAD_TIMEOUT))
            {
                return;
            }
        }
Beispiel #3
0
 ///<summary></summary>
 public static void Delete(long bugId)
 {
     if (RemotingClient.RemotingRole == RemotingRole.ClientWeb)
     {
         Meth.GetVoid(MethodBase.GetCurrentMethod(), bugId);
         return;
     }
     JobLinks.DeleteForType(JobLinkType.Bug, bugId);
     DataAction.RunBugsHQ(() => Crud.BugCrud.Delete(bugId), false);
 }
Beispiel #4
0
 ///<summary>You must surround with a try-catch when calling this method.  Deletes one job from the database.
 ///Also deletes all JobLinks, Job Events, and Job Notes associated with the job.  Jobs that have reviews or quotes on them may not be deleted and will throw an exception.</summary>
 public static void Delete(long jobNum)
 {
     if (RemotingClient.RemotingRole == RemotingRole.ClientWeb)
     {
         Meth.GetVoid(MethodBase.GetCurrentMethod(), jobNum);
         return;
     }
     if (JobReviews.GetForJob(jobNum).Count > 0 || JobQuotes.GetForJob(jobNum).Count > 0)
     {
         throw new Exception(Lans.g("Jobs", "Not allowed to delete a job that has attached reviews or quotes.  Set the status to deleted instead."));               //The exception is caught in FormJobEdit.
     }
     //JobReviews.DeleteForJob(jobNum);//do not delete, blocked above
     //JobQuotes.DeleteForJob(jobNum);//do not delete, blocked above
     JobLinks.DeleteForJob(jobNum);
     JobLogs.DeleteForJob(jobNum);
     JobNotes.DeleteForJob(jobNum);
     Crud.JobCrud.Delete(jobNum);             //Finally, delete the job itself.
 }
Beispiel #5
0
        ///<summary>Removes invalid jobs from the list of jobs passed in and then queries the DB to fill corresponding in-memory lists for remaining jobs.
        ///Set isForSearch true in order to only fill in-memory lists that are required for the Job Search window.</summary>
        public static void FillInMemoryLists(List <Job> listJobsAll, bool isForSearch = false)
        {
            //No need for remoting call here.
            listJobsAll.RemoveAll(x => x == null || x.JobNum == 0);
            List <long> jobNums = listJobsAll.Select(x => x.JobNum).ToList();
            Dictionary <long, List <JobLink> >         dictJobLinksAll         = new Dictionary <long, List <JobLink> >();
            Dictionary <long, List <JobNote> >         dictJobNotesAll         = new Dictionary <long, List <JobNote> >();
            Dictionary <long, List <JobReview> >       dictJobReviewsAll       = new Dictionary <long, List <JobReview> >();
            Dictionary <long, List <JobReview> >       dictJobTimeLogsAll      = new Dictionary <long, List <JobReview> >();
            Dictionary <long, List <JobQuote> >        dictJobQuotesAll        = new Dictionary <long, List <JobQuote> >();
            Dictionary <long, List <JobLog> >          dictJobLogsAll          = new Dictionary <long, List <JobLog> >();
            Dictionary <long, List <JobNotification> > dictJobNotificationsAll = new Dictionary <long, List <JobNotification> >();
            Dictionary <long, List <JobActiveLink> >   dictJobActiveLinksAll   = new Dictionary <long, List <JobActiveLink> >();

            //The job search only needs ListJobLinks and ListJobReviews to be filled.
            dictJobLinksAll   = JobLinks.GetJobLinksForJobs(jobNums).GroupBy(x => x.JobNum).ToDictionary(x => x.Key, x => x.ToList());
            dictJobReviewsAll = JobReviews.GetReviewsForJobs(jobNums.ToArray()).GroupBy(x => x.JobNum).ToDictionary(x => x.Key, x => x.ToList());
            //Fill all other dictionaries when not filling in-memory lists for job search results (saves db calls and memory usage).
            if (!isForSearch)
            {
                dictJobNotesAll         = JobNotes.GetJobNotesForJobs(jobNums).GroupBy(x => x.JobNum).ToDictionary(x => x.Key, x => x.ToList());
                dictJobTimeLogsAll      = JobReviews.GetTimeLogsForJobs(jobNums.ToArray()).GroupBy(x => x.JobNum).ToDictionary(x => x.Key, x => x.ToList());
                dictJobQuotesAll        = JobQuotes.GetJobQuotesForJobs(jobNums).GroupBy(x => x.JobNum).ToDictionary(x => x.Key, x => x.ToList());
                dictJobLogsAll          = JobLogs.GetJobLogsForJobs(jobNums).GroupBy(x => x.JobNum).ToDictionary(x => x.Key, x => x.ToList());
                dictJobNotificationsAll = JobNotifications.GetNotificationsForJobs(jobNums).GroupBy(x => x.JobNum).ToDictionary(x => x.Key, x => x.ToList());
                dictJobActiveLinksAll   = JobActiveLinks.GetJobActiveLinksForJobNums(jobNums).GroupBy(x => x.JobNum).ToDictionary(x => x.Key, x => x.ToList());
            }
            foreach (Job job in listJobsAll)
            {
                if (!dictJobLinksAll.TryGetValue(job.JobNum, out job.ListJobLinks))
                {
                    job.ListJobLinks = new List <JobLink>();                 //empty list if not found
                }
                if (!dictJobNotesAll.TryGetValue(job.JobNum, out job.ListJobNotes))
                {
                    job.ListJobNotes = new List <JobNote>();                 //empty list if not found
                }
                if (!dictJobReviewsAll.TryGetValue(job.JobNum, out job.ListJobReviews))
                {
                    job.ListJobReviews = new List <JobReview>();                 //empty list if not found
                }
                if (!dictJobTimeLogsAll.TryGetValue(job.JobNum, out job.ListJobTimeLogs))
                {
                    job.ListJobTimeLogs = new List <JobReview>();                 //empty list if not found
                }
                if (!dictJobQuotesAll.TryGetValue(job.JobNum, out job.ListJobQuotes))
                {
                    job.ListJobQuotes = new List <JobQuote>();                 //empty list if not found
                }
                if (!dictJobLogsAll.TryGetValue(job.JobNum, out job.ListJobLogs))
                {
                    job.ListJobLogs = new List <JobLog>();                 //empty list if not found
                }
                if (!dictJobNotificationsAll.TryGetValue(job.JobNum, out job.ListJobNotifications))
                {
                    job.ListJobNotifications = new List <JobNotification>();                 //empty list if not found
                }
                if (!dictJobActiveLinksAll.TryGetValue(job.JobNum, out job.ListJobActiveLinks))
                {
                    job.ListJobActiveLinks = new List <JobActiveLink>();                 //empty list if not found
                }
            }
        }