Example #1
0
        public void Execute(Task task)
        {
            Debug.WriteLine("Fujitsu.AFC.Operations.AllocatePin.cs -> Processing Started.");
            var prfMonMethod = new PrfMon();

            if (task.Pin == null)
            {
                var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoPin, task.Name);
                _taskService.CompleteUnrecoverableTaskException(task, message);
                throw new UnRecoverableErrorException(message);
            }

            if (task.SiteTitle.IsNullOrEmpty())
            {
                var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoSiteTitle, task.Name, task.Pin.Value);
                _taskService.CompleteUnrecoverableTaskException(task, message);
                throw new UnRecoverableErrorException(message);
            }

            if (string.IsNullOrEmpty(task.Dictionary))
            {
                var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoDictionaryXML, task.Name);
                _taskService.CompleteUnrecoverableTaskException(task, message);
                throw new UnRecoverableErrorException(message);
            }

            if (!task.Dictionary.IsValidXml())
            {
                var message = string.Format(TaskResources.OperationsTaskRequest_InvalidDictionaryXML, task.Name, task.Pin.Value);
                _taskService.CompleteUnrecoverableTaskException(task, message);
                throw new UnRecoverableErrorException(message);
            }

            if (_provisioningService.GetNumberOfUnallocatedSites() == 0)
            {
                throw new ApplicationException(string.Format(TaskResources.OperationsTaskRequest_NoUnallocatedSitesAvailable, task.Name, task.Pin.Value));
            }

            if (_siteService.Query(x => x.Pin == task.Pin.Value).Any())
            {
                var message = string.Format(TaskResources.OperationsTaskRequest_PinAlreadyExists, task.Name, task.Pin.Value);
                _taskService.CompleteUnrecoverableTaskException(task, message);
                throw new UnRecoverableErrorException(message);
            }

            if (_taskService.PendingAllocatePinOperation(task.Pin.Value, task.InsertedDate))
            {
                var message = string.Format(TaskResources.OperationsTaskRequest_PinRequestPending, task.Name, task.Pin.Value);
                _taskService.CompleteUnrecoverableTaskException(task, message);
                throw new UnRecoverableErrorException(message);
            }

            task.SiteId = _pinService.AllocatePin(task);

            Debug.WriteLine("Fujitsu.AFC.Operations.AllocatePin.cs -> Completed Processing - PIN: {0} SiteTitle: {1} Duration: {2:0.000}s", task.Pin.Value, task.SiteTitle, prfMonMethod.Stop());
        }
        public void Execute(Task task)
        {
            Debug.WriteLine("Fujitsu.AFC.Provisioning.CaseSiteProvisioning.cs -> Processing Started.");
            var prfMonMethod = new PrfMon();

            var maximumNumberOfUnallocatedSites   = _parameterService.GetParameterByNameAndCache <int>(ParameterNames.SiteProvisionerTotalUnallocatedSitesMaximum);
            var maximumNumberOfSitesPerCollection = _parameterService.GetParameterByNameAndCache <int>(ParameterNames.SiteProvisionerSitesPerSiteCollection);
            var totalNumberOfUnallocatedSites     = _provisioningService.GetNumberOfUnallocatedSites();

            if (totalNumberOfUnallocatedSites < maximumNumberOfUnallocatedSites)
            {
                var currentSiteCollectionId = _provisioningService.GetSiteCollectionId();

                while (totalNumberOfUnallocatedSites < maximumNumberOfUnallocatedSites)
                {
                    var numberOfSitesProvisionedWithinSiteCollection = _provisioningService.GetNumberOfProvisionedSitesWithinCollection(currentSiteCollectionId);
                    if (numberOfSitesProvisionedWithinSiteCollection == 0)
                    {
                        currentSiteCollectionId = _provisioningService.ProvisionSiteCollection(currentSiteCollectionId);
                        _provisioningService.ConfigureSiteCollection(currentSiteCollectionId);
                        _provisioningService.CreateSiteAudit(currentSiteCollectionId, task);
                    }

                    _provisioningService.ProvisionSite(currentSiteCollectionId, task);

                    numberOfSitesProvisionedWithinSiteCollection++;
                    totalNumberOfUnallocatedSites++;

                    if (numberOfSitesProvisionedWithinSiteCollection >= maximumNumberOfSitesPerCollection && totalNumberOfUnallocatedSites < maximumNumberOfUnallocatedSites)
                    {
                        currentSiteCollectionId = _provisioningService.GetSiteCollectionId();
                    }
                }
            }
            Debug.WriteLine("Fujitsu.AFC.Provisioning.CaseSiteProvisioning.cs -> Completed Processing. Duration: {0:0.000}s", prfMonMethod.Stop());
        }
        public void ProvisioningService_GetNumberOfAllocatedSites_QueriesRepository()
        {
            _provisioningService.GetNumberOfUnallocatedSites();

            _mockProvisionedSiteRepository.Verify(v => v.Query(It.IsAny <Expression <Func <ProvisionedSite, bool> > >()), Times.Once);
        }