Exemplo n.º 1
0
        public Commitment AssignToVolunteer(Disaster disaster, Person person, DateTime startDate, DateTime endDate)
        {
            if (disaster == null) throw new ArgumentNullException("disaster");
            if (person == null) throw new ArgumentNullException("person");
            if (DateTime.Compare(endDate, startDate) < 0) throw new ArgumentException("endDate cannot be earlier than startDate");

            // check if the start and end date falls within an existing commitment
            // disregard any disasters that are inactive
            Expression<Func<Commitment, bool>> dateInRange = c =>
                (DateTime.Compare(c.StartDate, startDate) <= 0 && DateTime.Compare(c.EndDate, startDate) >= 0) ||
                (DateTime.Compare(c.StartDate, endDate) <= 0 && DateTime.Compare(c.EndDate, endDate) >= 0);

            var hasExistingCommitment = (from c in ourService.Commitments
                                         join d in ourService.Disasters on c.DisasterId equals d.Id
                                         where d.IsActive
                                         select c).Any(dateInRange);

            if (hasExistingCommitment) {
                throw new ArgumentException("there is already a commitment for this date range");
            }

            return ourService.AddCommitment(new Commitment()
            {
                PersonId = person.Id,
                DisasterId = disaster.Id,
                StartDate = startDate,
                EndDate = endDate
            });
        }
        public ActionResult Edit(Disaster disaster)
        {
            TempData["EditUrlDeprecatedWarning"] = "POST /Edit is deprecated. Use POST /Create instead";
            if (ModelState.IsValid && !String.IsNullOrWhiteSpace(disaster.Name))
            {
                if (disaster.Id == -1)
                {
                    try
                    {
                        _disasterSvc.Create(disaster);
                    }
                    catch (DisasterAlreadyExistsException)
                    {
                        ModelState.AddModelError("Name", "A Disaster already exists with that Name!");
                        return View("Create", disaster);
                    }
                }
                else
                {
                    _disasterSvc.Update(disaster.Id, disaster.Name, disaster.IsActive);
                }

                return Redirect("/Disaster/List");
            }

            ModelState.AddModelError("Name", "Disaster Name is required!");
            return View("Create", disaster);
        }
Exemplo n.º 3
0
        public Disaster Create(Disaster disaster)
        {
            if (disaster == null) throw new ArgumentNullException("disaster");
            if (String.IsNullOrWhiteSpace(disaster.Name)) throw new ArgumentNullException("disasterName");

            return ourService.AddDisaster(disaster);
        }
Exemplo n.º 4
0
        public IQueryable<Commitment> RetrieveCommitmentsForDisaster(Person person, Disaster disaster)
        {
            if (disaster == null)
                throw new ArgumentNullException("disaster", "Disaster cannot be null");

            return RetrieveCommitments(person, true).Where(c => c.DisasterId == disaster.Id);
        }
        public ActionResult Edit(Disaster disaster)
        {
            if (ModelState.IsValid && !String.IsNullOrWhiteSpace(disaster.Name))
            {
                if (disaster.Id == -1)
                {
                    try
                    {
                        _disasterSvc.Create(disaster);
                    }
                    catch (DisasterAlreadyExistsException)
                    {
                        ModelState.AddModelError("Name", "A Disaster already exists with that Name!");
                        return View("Edit", disaster);
                    }
                }
                else
                {
                    _disasterSvc.Update(disaster.Id, disaster.Name, disaster.IsActive);
                }

                return Redirect("/Disaster/List");
            }

            ModelState.AddModelError("Name", "Disaster Name is required!");
            return View(disaster);
        }
 DisasterClusterCoordinatorsViewModel GetDisasterClusterCoordinatorsViewModel(Disaster disaster)
 {
     IList<Person> allPersonDataForDisplay;
     var clusterCoordinators = _clusterCoordinatorService.GetAllCoordinatorsForDisplay(disaster.Id, out allPersonDataForDisplay);
     var allClusters = _cluster.GetList().ToList();
     var disasterClusterCoordinatorsViewModel =
         new DisasterClusterCoordinatorsViewModel
         {
             DisasterName = disaster.Name,
             DisasterId = disaster.Id,
             Clusters = allClusters
                 .Select(c => new ClusterViewModel
                              {
                                  Name = c.Name,
                                  Coordinators = clusterCoordinators
                                      .Where(x => x.ClusterId == c.Id)
                                      .Select(x => new ClusterCoordinatorViewModel
                                                   {
                                                       Name = x.Person.FullName,
                                                       Id = x.Id,
                                                   })
                                      .ToList(),
                              })
                 .ToList(),
             AvailableClusters = allClusters,
             AvailablePeople = allPersonDataForDisplay
         };
     return disasterClusterCoordinatorsViewModel;
 }
Exemplo n.º 7
0
        public IEnumerable<Person> GetVolunteersForDate(Disaster disaster, DateTime date)
        {
            if (disaster == null)
                throw new ArgumentNullException("disaster", "disaster cannot be null");

            return GetVolunteersForDate(disaster.Id, date);
        }
        public ActionResult Create(DisasterViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var disaster = new Disaster
                    {
                        Id = model.Id,
                        Name = model.Name,
                        IsActive = model.IsActive
                    };

                    if (model.Id == -1)
                    {
                        _disasterSvc.Create(disaster);
                    }
                    else
                    {
                        _disasterSvc.Update(disaster);
                    }
                }
                catch (DisasterAlreadyExistsException)
                {
                    ModelState.AddModelError("Name", "A Disaster already exists with that Name!");
                    return View("Create", model);
                }

                return Redirect("/Disaster/List");
            }
            return View("Create", model);
        }
Exemplo n.º 9
0
        public IEnumerable<Person> GetVolunteersForDate(Disaster disaster, DateTime date, bool clusterCoordinatorsOnly, bool checkedInOnly = false)
        {
            if (disaster == null)
                throw new ArgumentNullException("disaster", "disaster cannot be null");

            return GetVolunteersForDate(disaster.Id, date, clusterCoordinatorsOnly, checkedInOnly);
        }
Exemplo n.º 10
0
        public Disaster Create(Disaster disaster)
        {
            if (disaster == null) throw new ArgumentNullException("disaster");
            if (String.IsNullOrWhiteSpace(disaster.Name)) throw new ArgumentNullException("disasterName");
            if (ourService.Disasters.Any(d => d.Name == disaster.Name)) throw new DisasterAlreadyExistsException();

            return ourService.AddDisaster(disaster);
        }
Exemplo n.º 11
0
        private IQueryable<Person> GetPeople(Disaster disaster)
        {
            var people = from p in dataService.Persons
                          join c in dataService.Commitments on p.Id equals c.PersonId
                          where c.DisasterId == disaster.Id
                          select p;

            return people;
        }
 public void Arrange()
 {
     _dataService = new DataService(new CrisisCheckin());
     _dataAccessHelper = new DataAccessHelper(_dataService);
     _clusterCoordinatorService = new ClusterCoordinatorService(_dataService);
     _disaster = _dataAccessHelper.Create_a_disaster();
     _person = _dataAccessHelper.Create_a_volunteer();
     _clusterId = _person.ClusterId.GetValueOrDefault();
 }
Exemplo n.º 13
0
        public void Create(Disaster disaster)
        {
            if (disaster == null) throw new ArgumentNullException("disaster");
            if (String.IsNullOrWhiteSpace(disaster.Name)) throw new ArgumentNullException("disaster");
            if (_dataService.Disasters.Any(d => d.Name == disaster.Name)) throw new DisasterAlreadyExistsException();
            // Why should disaster name be unique?

            _dataService.AddDisaster(disaster);
        }
 public void Arrange()
 {
     _dataService = new DataService(new CrisisCheckin(), new CrisisCheckinMembership());
     _dataAccessHelper = new DataAccessHelper(_dataService);
     _clusterCoordinatorService = new ClusterCoordinatorService(_dataService);
     _disaster = _dataAccessHelper.Create_a_disaster();
     _clusterId = _dataAccessHelper.GetRandomClusterId();
     _person = _dataAccessHelper.Create_a_volunteer();
 }
 void Create_a_disaster()
 {
     _disaster = new Disaster
                 {
                     IsActive = true,
                     Name = "Great Seattle Starbucks Strike",
                 };
     _dataService.AddDisaster(_disaster);
     _clusterId = _dataService.Clusters.First().Id;
 }
Exemplo n.º 16
0
 public Disaster Create_a_disaster()
 {
     var disaster = new Disaster
                    {
                        IsActive = true,
                        Name = "Great Seattle Starbucks Strike",
                    };
     _dataService.AddDisaster(disaster);
     return disaster;
 }
Exemplo n.º 17
0
 public IEnumerable<Person> GetVolunteers(Disaster disaster)
 {
     if (disaster == null)
         throw new ArgumentNullException("disaster", "disaster cannot be null");
     var storedDisaster = dataService.Disasters.SingleOrDefault(d => d.Id == disaster.Id);
     if (storedDisaster == null)
         throw new ArgumentException("Disaster was not found", "disaster");
     IQueryable<Person> people = GetPeople(disaster);
     return people;
 }
Exemplo n.º 18
0
        public IEnumerable<Person> GetVolunteers(Disaster disaster, bool checkedInOnly = false)
        {
            if (disaster == null)
                throw new ArgumentNullException("disaster", "disaster cannot be null");

            var people = GetPeople(disaster.Id, checkedInOnly);

            if (people == null)
                throw new NullReferenceException(string.Format("Attempt to get volunteers for disaster ID {0} returned null.", disaster.Id));
            return people.ToList();
        }
        public void Init()
        {
            _disaster = new Disaster {Id = 0, IsActive = true, Name = "Sharknado"};
            _cluster = new Cluster {Id = 1, Name = "Red Zone"};
            _person = new Person {Id = 2, FirstName = "John", LastName = "Doe"};

            _dataService = new Mock<IDataService>();
            _dataService.Setup(x => x.Disasters).Returns(new EnumerableQuery<Disaster>(new[] {_disaster}));
            _dataService.Setup(x => x.Clusters).Returns(new EnumerableQuery<Cluster>(new[] {_cluster}));
            _dataService.Setup(x => x.Persons).Returns(new EnumerableQuery<Person>(new[] {_person}));

            _clusterCoordinatorService = new Services.ClusterCoordinatorService(_dataService.Object);
        }
Exemplo n.º 20
0
        public Commitment AssignToVolunteer(Disaster disaster, Person person, DateTime startDate, DateTime endDate)
        {
            if (disaster == null) throw new ArgumentNullException("disaster");
            if (person == null) throw new ArgumentNullException("person");
            if (DateTime.Compare(endDate, startDate) < 0) throw new ArgumentException("endDate cannot be earlier than startDate");

            return ourService.AddCommitment(new Commitment()
            {
                PersonId = person.Id,
                DisasterId = disaster.Id,
                StartDate = startDate,
                EndDate = endDate
            });
        }
        public void Assign_ValidDataAdd_ReturnsListView()
        {
            // Arrange
            var disaster = new Mock<IDisaster>();

            var controller = new DisasterController(disaster.Object);

            // Act
            var viewModel = new Disaster { Id = -1, Name ="test", IsActive = false};
            var response = controller.Create(viewModel);

            // Assert
            var result = response as RedirectResult;
            Assert.IsTrue(result.Url.Equals("/Disaster/List"));
        }
        public void Lookup_UnfilteredVolunteers_For_Disaster_Returns_AllVolunteers_ForTheDisaster()
        {
            //Arrange
            int disasterId = 2;
            var disaster = new Disaster();
            _disasterSvc.Setup(x => x.Get(disasterId)).Returns(disaster);
            var allVolunteers = new Collection<Person>();
            _adminSvc.Setup(x => x.GetVolunteers(disaster)).Returns(allVolunteers);

            var controller = CreateVolunteerController();
            //Act

            var response = controller.Filter(new ListByDisasterViewModel() { SelectedDisaster = disasterId, CommitmentDate = null });

            //Assert
            Assert.AreEqual(allVolunteers, response.Model);
        }
        public void Assign_duplicateName_ReturnsCreateView()
        {
            // Arrange
            var disaster = new Mock<IDisaster>();

            var controller = new DisasterController(disaster.Object);

            disaster.Setup(x => x.Create(
                It.IsAny<Disaster>())).Throws(new DisasterAlreadyExistsException());

            var viewModel = new Disaster { Id = -1, Name = "test", IsActive = true };
            var response = controller.Create(viewModel);

            var view = response as ViewResult;
            Assert.AreEqual("Create", view.ViewName);
            Assert.IsTrue(view.ViewData.ModelState.Count >= 1);
        }
        public void Lookup_FilteredVolunteers_For_Disaster_Returns_Volunteers_ForTheDisaster_FilteredByDate()
        {
            //Arrange
            int disasterId = 2;
            DateTime filteredDateTime = new DateTime(2014, 6, 3, 10, 8, 6);
            var disaster = new Disaster();
            _disasterSvc.Setup(x => x.Get(disasterId)).Returns(disaster);
            var filteredVolunteers = new Collection<Person>();
            _adminSvc.Setup(x => x.GetVolunteersForDate(disaster, filteredDateTime)).Returns(filteredVolunteers);

            var controller = CreateVolunteerController();
            //Act

            var response = controller.Filter(new ListByDisasterViewModel() { SelectedDisaster = disasterId, CommitmentDate = filteredDateTime });

            //Assert
            Assert.AreEqual(filteredVolunteers, response.Model);
        }
Exemplo n.º 25
0
        public IEnumerable<Person> GetVolunteersForDate(Disaster disaster, DateTime date)
        {
            if (disaster == null)
                throw new ArgumentNullException("disaster", "disaster cannot be null");
            var storedDisaster = dataService.Disasters.SingleOrDefault(d => d.Id == disaster.Id);
            if (storedDisaster == null)
                throw new ArgumentException("Disaster was not found", "disaster");
            var commitments = from c in dataService.Commitments
                              where c.DisasterId == disaster.Id
                              where date >= c.StartDate && date <= c.EndDate
                              select c;

            var people = from c in commitments
                         join p in dataService.Persons on c.PersonId equals p.Id
                         select p;
            people.Include(p => p.Cluster);
            return people;
        }
Exemplo n.º 26
0
        public ActionResult Edit(Disaster disaster)
        {
            if (ModelState.IsValid && !String.IsNullOrWhiteSpace(disaster.Name))
            {
                if (disaster.Id == -1)
                {
                    _disasterSvc.Create(disaster);
                }
                else
                {
                    _disasterSvc.Update(disaster.Id, disaster.Name, disaster.IsActive);
                }

                return Redirect("/Disaster/List");
            }

            ModelState.AddModelError("Name", "Disaster Name is required!");
            return View(disaster);
        }
Exemplo n.º 27
0
        public ActionResult Edit(string id)
        {
            int disasterId;

            Disaster viewData;

            bool validId = int.TryParse(id, out disasterId);

            if (validId && disasterId != -1)
            {
                viewData = _disasterSvc.Get(disasterId);
            }
            else
            {
                // Adding new Disaster here
                viewData = new Disaster {IsActive = true};
            }

            return View("Create", viewData);
        }
Exemplo n.º 28
0
        public ResourceSearch(List<Disaster> disasters, List<ResourceType> resourceTypes)
        {
            var alldisasters = new Disaster()
            {
                Id = GeneralSelectId,
                IsActive = true,
                Name = "All Disasters"
            };
            disasters.Insert(0, alldisasters);

            var allResourceTypes = new ResourceType()
            {
                ResourceTypeId = GeneralSelectId,
                TypeName = "All Resource Types"
            };
            resourceTypes.Insert(0, allResourceTypes);

            _disasters = disasters;
            _resourceTypes = resourceTypes;
        }
        public void Lookup_UnfilteredVolunteers_For_Disaster_Returns_AllVolunteers_ForTheDisaster()
        {
            //Arrange
            int disasterId = 2;
            var disaster = new Disaster();
            _disasterSvc.Setup(x => x.Get(disasterId)).Returns(disaster);
            var allVolunteers = new List<Person>();
            _adminSvc.Setup(x => x.GetVolunteersForDisaster(disaster.Id, null, false)).Returns(allVolunteers);

            //Act
            var response = _controllerUnderTest.Filter(new ListByDisasterViewModel
            {
                SelectedDisaster = disasterId, CommitmentDate = null
            });

            //Assert
            var model = response.Model as CheckinListsResultsViewModel;
            Assert.IsNotNull(model, "View Model is not an CheckinListsResultsViewModel.");

            CollectionAssert.AreEquivalent(allVolunteers.ToArray(), model.VolunteerCheckins.ToArray());
        }
        public void Init()
        {
            _coordinatorId = 42;
            _notCoordinatorId = 10;
            _dataService = new Mock<IDataService>();

            _disaster1 = new Disaster { Id = 1, IsActive = true, Name = "Sharknado" };
            _disaster2 = new Disaster { Id = 2, IsActive = true, Name = "Ice Age" };

            _cluster1 = new Cluster { Id = 2, Name = "Red Zone" };
            _cluster2 = new Cluster { Id = 3, Name = "Other Cluster" };

            _person1 = new Person { Id = 3, FirstName = "John", LastName = "Doe" };
            _person2 = new Person { Id = 4, FirstName = "Richard", LastName = "Roe" };
            _person3 = new Person { Id = 5, FirstName = "Little", LastName = "Toe" };

            _dataService.Setup(x => x.Disasters).Returns(new EnumerableQuery<Disaster>(new[]
            {
                _disaster1,
                _disaster2
            }));
            _dataService.Setup(x => x.Clusters).Returns(new EnumerableQuery<Cluster>(new[]
            {
                _cluster1,
                _cluster2
            }));
            _dataService.Setup(x => x.Persons).Returns(new EnumerableQuery<Person>(new[]
            {
                _person1,
                _person2,
                _person3
            }));
            _dataService.Setup(x => x.Commitments).Returns(new EnumerableQuery<Commitment>(new[]
            {
                new Commitment { DisasterId = _disaster1.Id, PersonId = _person1.Id },
                new Commitment { DisasterId = _disaster1.Id, PersonId = _person2.Id },
                new Commitment { DisasterId = _disaster2.Id, PersonId = _person3.Id }
            }));
            _clusterCoordinatorService = new Services.ClusterCoordinatorService(_dataService.Object);
        }