public void Setup()
        {
            _responsibilitiesService = new Mock<IResponsibilitiesService>();
            _responsibilitiesService.Setup(x => x.CreateResponsibilitiesFromWizard(It.IsAny<CreateResponsibilityFromWizardRequest>()));

            _model = new CreateResponsibilityFromSiteAndResponsibilityTemplateModel
                     {
                         SiteIds = new [] {123L},
                         Responsibilities =  new List<ConfiguredResponsibilityFromTemplate>()
                                             {
                                                 new ConfiguredResponsibilityFromTemplate() { 
                                                     FrequencyId = TaskReoccurringType.SixMonthly,
                                                     ResponsibilityTemplateId = 1234L,
                                                     ResponsiblePersonEmployeeId = Guid.NewGuid()
                                                 },
                                                 new ConfiguredResponsibilityFromTemplate() { 
                                                     FrequencyId = TaskReoccurringType.TwentyFourMonthly,
                                                     ResponsibilityTemplateId = 352334L,
                                                     ResponsiblePersonEmployeeId = Guid.NewGuid()
                                                 }
                                             }
                     };
        }
        public JsonResult GenerateResponsibilities(CreateResponsibilityFromSiteAndResponsibilityTemplateModel model)
        {
            ValidateGenerateResponsibilities(model);
            if (!ModelState.IsValid)
            {
                return ModelStateErrorsAsJson();
            }

            var request = new CreateResponsibilityFromWizardRequest
                                {
                                    CompanyId = CurrentUser.CompanyId,
                                    SiteIds = model.SiteIds,
                                    UserId = CurrentUser.UserId,
                                    ResponsibilityFromTemplateDetails = model.Responsibilities
                                        .Select(x => new ResponsibilityFromTemplateDetail()
                                                    {
                                                        ResponsibilityTemplateId = x.ResponsibilityTemplateId,
                                                        FrequencyId = x.FrequencyId,
                                                        ResponsiblePersonEmployeeId = x.ResponsiblePersonEmployeeId.Value
                                                    })
                                        .ToList()
                                };

            _responsibilitiesService.CreateResponsibilitiesFromWizard(request);
            return Json(new { Success = true });
        }
        private void ValidateGenerateResponsibilities(CreateResponsibilityFromSiteAndResponsibilityTemplateModel model)
        {
            if (model.SiteIds == null || model.SiteIds.Any() == false)
            {
                ModelState.AddModelError("SiteIds", "Please select the Sites you wish to add Responsibilities to");
            }

            if (model.Responsibilities == null || model.Responsibilities.Any() == false)
            {
                ModelState.AddModelError("Responsibilities", "Please select at least one Responsibility you wish to generate");
            }
            else
            {
                var responsibilityTemplateIdInError = false;
                var frequencyIdInError = false;
                var employeeIdInError = false;
                
                foreach (var resp in model.Responsibilities)
                {
                    if (resp.ResponsibilityTemplateId == default(long) && !responsibilityTemplateIdInError)
                    {
                        ModelState.AddModelError("Responsibilities", "Please select the Responsibility you wish to generate");
                        responsibilityTemplateIdInError = true;
                    }
                    if (resp.FrequencyId == TaskReoccurringType.None && !frequencyIdInError)
                    {
                        ModelState.AddModelError("Responsibilities", "Please select the Monitoring Frequency for each of the selected Responsibilities");
                        frequencyIdInError = true;
                    }
                    if ((resp.ResponsiblePersonEmployeeId == Guid.Empty || resp.ResponsiblePersonEmployeeId == null) && !employeeIdInError)
                    {
                        ModelState.AddModelError("Responsibilities", "Please select a Responsible Person for the selected Responsibilities");
                        employeeIdInError = true;
                    }
                }
            }


        }