public void IsDeveloperCurrentlyHired_any_account()
        {
            var hired = new Hired()
            {
                DeveloperId = 1
            };

            var mockHiringRepository = new Mock<IHiringRepository>();
            mockHiringRepository.Setup(obj => obj.GetCurrentHiringByDeveloper(1)).Returns(hired);

            var mockRepositoryFactory = new Mock<IDataRepositoryFactory>();
            mockRepositoryFactory.Setup(obj => obj.GetDataRepository<IHiringRepository>())
                .Returns(mockHiringRepository.Object);

            var developerHiringEngine = new DeveloperHiringEngine(mockRepositoryFactory.Object);

            var try1 = developerHiringEngine.IsDeveloperCurrentlyHired(2);
            var try2 = developerHiringEngine.IsDeveloperCurrentlyHired(1);

            Assert.IsFalse(try1);
            Assert.IsTrue(try2);


        }
        public Hired HireDeveloperToClient(string loginEmail, int developerId, DateTime startDate, DateTime endDate)
        {
            if (startDate > DateTime.Now)
                throw new UnableToHireForDateException($"Cannot hire for date {startDate.ToShortDateString()} yet");

            var accountRepository = _dataRepositoryFactory.GetDataRepository<IAccountRepository>();
            var hiringRepository = _dataRepositoryFactory.GetDataRepository<IHiringRepository>();

            var developerIsHired = IsDeveloperCurrentlyHired(developerId);

            if(developerIsHired)
                throw new DeveloperCurrentlyHiredException($"Developer {developerId} is already hired.");
            var account = accountRepository.GetByLogin(loginEmail);

            if(account == null)
                throw new NotFoundException($"No account found for such login email {loginEmail}");

            var hired = new Hired()
            {
                AccountId = account.AccountId,
                DeveloperId = developerId,
                StartDate = startDate,
                DateDue = endDate
            };

            var savedEntity = hiringRepository.Add(hired);

            return savedEntity;


        }