private ActionResult DoDeployOrSimulate(bool isSimulation, string projectName, string projectConfigurationName, string projectConfigurationBuildId, string targetEnvironmentName, ProjectType? projectType, List<string> targetMachines = null)
        {
            if (string.IsNullOrEmpty(projectName))
              {
            return BadRequest();
              }

              if (string.IsNullOrEmpty(projectConfigurationName))
              {
            return BadRequest();
              }

              if (string.IsNullOrEmpty(projectConfigurationBuildId))
              {
            return BadRequest();
              }

              if (string.IsNullOrEmpty(targetEnvironmentName))
              {
            return BadRequest();
              }

              if (!projectType.HasValue)
              {
            return BadRequest();
              }

              try
              {
            Guid deploymentId = Guid.NewGuid();

            var projectConfigurationModel = new ProjectConfigurationModel(projectConfigurationName);

            var deploymentState =
              new DeploymentState(
            deploymentId,
            UserIdentity,
            projectName,
            projectConfigurationModel.ConfigurationName,
            targetEnvironmentName);

            _deploymentStateProvider.SetDeploymentState(
              deploymentId,
              deploymentState);

            _agentService.DeployAsync(
              deploymentId,
              _sessionService.UniqueClientId,
              SecurityUtils.CurrentUsername,
              CreateDeploymentInfo(
            deploymentId,
            isSimulation,
            projectName,
            projectConfigurationModel.ConfigurationName,
            projectConfigurationBuildId,
            targetEnvironmentName,
            projectType.Value,
            targetMachines));

            return Json(new { Status = "OK" });
              }
              catch (Exception exc)
              {
            return HandleAjaxError(exc);
              }
        }
        public ActionResult GetProjectConfigurationBuilds(string projectName, string projectConfigurationName)
        {
            if (string.IsNullOrEmpty(projectName))
              {
            return BadRequest();
              }

              if (string.IsNullOrEmpty(projectConfigurationName))
              {
            return BadRequest();
              }

              var projectConfigurationModel = new ProjectConfigurationModel(projectConfigurationName);

              List<ProjectConfigurationBuildViewModel> projectConfigurationBuildViewModels =
            _agentService.GetProjectConfigurationBuilds(
              projectName,
              projectConfigurationModel.ConfigurationName,
              projectConfigurationModel.BranchName,
              _maxProjectConfigurationBuildsCount)
              .Select(
            pcb =>
              new ProjectConfigurationBuildViewModel
              {
                Id = pcb.Id,
                Number = pcb.Number,
                StartDateStr = pcb.StartDate
              })
              .ToList();

              return
            Json(
              new { projectConfigurationBuilds = projectConfigurationBuildViewModels },
              JsonRequestBehavior.AllowGet);
        }