public async Task <Requirement> FindRequirementByIDAsync(int requirementID)
        {
            Requirement requirement = null;
            Stopwatch   timespan    = Stopwatch.StartNew();

            try
            {
                requirement = await db.Requirements.FindAsync(requirementID);

                timespan.Stop();
                log.TraceApi("SQL Database", "RequirementRepository.FindRequirementByIDAsync", timespan.Elapsed, "requirementID={0}", requirementID);
            }
            catch (Exception e)
            {
                log.Error(e, "Error in RequirementRepository.FindRequirementByIDAsync(requirementID={0})", requirementID);
                throw;
            }

            return(requirement);
        }
        public async Task CreateAsync(Requirement requirementToAdd)
        {
            Stopwatch timespan = Stopwatch.StartNew();

            try
            {
                db.Requirements.Add(requirementToAdd);
                await db.SaveChangesAsync();

                timespan.Stop();
                log.TraceApi("SQL Database", "RequirementRepository.CreateAsync", timespan.Elapsed, "requirementToAdd={0}", requirementToAdd);
            }
            catch (Exception e)
            {
                log.Error(e, "Error in RequirementRepository.CreateAsync(requirementToAdd={0})", requirementToAdd);
                throw;
            }

            SiccoAppConfiguration.SuspendExecutionStrategy = false;
        }
        public async Task DeleteAsync(int requirementID)
        {
            Requirement requirement = null;
            Stopwatch   timespan    = Stopwatch.StartNew();

            try
            {
                requirement = await db.Requirements.FindAsync(requirementID);

                db.Requirements.Remove(requirement);
                db.SaveChanges();

                timespan.Stop();
                log.TraceApi("SQL Database", "RequirementRepository.DeleteAsync", timespan.Elapsed, "requirementID={0}", requirementID);
            }
            catch (Exception e)
            {
                log.Error(e, "Error in RequirementRepository.DeleteAsync(requirementID={0})", requirementID);
                throw;
            }
        }
        public async Task <List <Presentation> > FindPresentationsAsync(int requirementID)
        {
            Requirement requirement = null;
            Stopwatch   timespan    = Stopwatch.StartNew();

            try
            {
                requirement = await db.Requirements.FindAsync(requirementID);

                var result = requirement.Presentations;

                timespan.Stop();
                log.TraceApi("SQL Database", "RequirementRepository.FindRequirementsByContractAsync", timespan.Elapsed);

                return(result.ToList());
            }
            catch (Exception e)
            {
                log.Error(e, "Error in RequirementRepository.FindRequirementsByContractAsync()");
                throw;
            }
        }