Skip to content

Commit

Permalink
Merge pull request #116 from afiqlattif/add-volunteer
Browse files Browse the repository at this point in the history
Volunteer Management
  • Loading branch information
AmabelYeo committed Oct 23, 2018
2 parents 1386f4a + fc1564f commit 84d9be0
Show file tree
Hide file tree
Showing 88 changed files with 5,495 additions and 12 deletions.
2 changes: 2 additions & 0 deletions src/main/java/seedu/address/commons/core/Messages.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ public class Messages {

// Volunteers messages
public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX = "The person index provided is invalid";
public static final String MESSAGE_INVALID_VOLUNTEER_DISPLAYED_INDEX = "The volunteer index provided is invalid";
public static final String MESSAGE_VOLUNTEERS_LISTED_OVERVIEW = "%1$d volunteers listed!";
public static final String MESSAGE_PERSONS_LISTED_OVERVIEW = "%1$d persons listed!";

// Event messages
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/seedu/address/logic/Logic.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import seedu.address.model.event.Event;
import seedu.address.model.person.Person;
import seedu.address.model.record.Record;
import seedu.address.model.volunteer.Volunteer;

/**
* API of the Logic component
Expand All @@ -24,6 +25,9 @@ public interface Logic {
/** Returns an unmodifiable view of the filtered list of persons */
ObservableList<Person> getFilteredPersonList();

/** Returns an unmodifiable view of the filtered list of volunteers */
ObservableList<Volunteer> getFilteredVolunteerList();

/** Returns an unmodifiable view of the filtered list of events */
ObservableList<Event> getFilteredEventList();

Expand Down
6 changes: 6 additions & 0 deletions src/main/java/seedu/address/logic/LogicManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import seedu.address.model.event.Event;
import seedu.address.model.person.Person;
import seedu.address.model.record.Record;
import seedu.address.model.volunteer.Volunteer;

/**
* The main LogicManager of the app.
Expand Down Expand Up @@ -47,6 +48,11 @@ public ObservableList<Person> getFilteredPersonList() {
return model.getFilteredPersonList();
}

@Override
public ObservableList<Volunteer> getFilteredVolunteerList() {
return model.getFilteredVolunteerList();
}

@Override
public ObservableList<Event> getFilteredEventList() {
return model.getFilteredEventList();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
package seedu.address.logic.commands;

import static java.util.Objects.requireNonNull;
import static seedu.address.logic.parser.CliSyntax.PREFIX_VOLUNTEER_ADDRESS;
import static seedu.address.logic.parser.CliSyntax.PREFIX_VOLUNTEER_BIRTHDAY;
import static seedu.address.logic.parser.CliSyntax.PREFIX_VOLUNTEER_EMAIL;
import static seedu.address.logic.parser.CliSyntax.PREFIX_VOLUNTEER_GENDER;
import static seedu.address.logic.parser.CliSyntax.PREFIX_VOLUNTEER_NAME;
import static seedu.address.logic.parser.CliSyntax.PREFIX_VOLUNTEER_PHONE;
import static seedu.address.logic.parser.CliSyntax.PREFIX_VOLUNTEER_TAG;

import seedu.address.logic.CommandHistory;
import seedu.address.logic.commands.exceptions.CommandException;
import seedu.address.model.Model;
import seedu.address.model.volunteer.Volunteer;

/**
* Adds a volunteer to the address book.
*/
public class AddVolunteerCommand extends Command {

public static final String COMMAND_WORD = "add";

public static final String MESSAGE_USAGE = COMMAND_WORD + ": Adds a volunteer to the address book. "
+ "Parameters: "
+ PREFIX_VOLUNTEER_NAME + "NAME "
+ PREFIX_VOLUNTEER_GENDER + "GENDER "
+ PREFIX_VOLUNTEER_BIRTHDAY + "BIRTHDAY "
+ PREFIX_VOLUNTEER_PHONE + "PHONE "
+ PREFIX_VOLUNTEER_EMAIL + "EMAIL "
+ PREFIX_VOLUNTEER_ADDRESS + "ADDRESS "
+ "[" + PREFIX_VOLUNTEER_TAG + "TAG]...\n"
+ "Example: " + COMMAND_WORD + " "
+ PREFIX_VOLUNTEER_NAME + "John Doe "
+ PREFIX_VOLUNTEER_GENDER + "m "
+ PREFIX_VOLUNTEER_BIRTHDAY + "01-10-1985 "
+ PREFIX_VOLUNTEER_PHONE + "98765432 "
+ PREFIX_VOLUNTEER_EMAIL + "johnd@example.com "
+ PREFIX_VOLUNTEER_ADDRESS + "311, Clementi Ave 2, #02-25 "
+ PREFIX_VOLUNTEER_TAG + "friends "
+ PREFIX_VOLUNTEER_TAG + "driver";

public static final String MESSAGE_SUCCESS = "New volunteer added: %1$s";
public static final String MESSAGE_DUPLICATE_VOLUNTEER = "This volunteer already exists in the application.";

private final Volunteer toAdd;

/**
* Creates an AddCommand to add the specified {@code Volunteer}
*/
public AddVolunteerCommand(Volunteer volunteer) {
requireNonNull(volunteer);
toAdd = volunteer;
}

@Override
public CommandResult execute(Model model, CommandHistory history) throws CommandException {
requireNonNull(model);

if (model.hasVolunteer(toAdd)) {
throw new CommandException(MESSAGE_DUPLICATE_VOLUNTEER);
}

model.addVolunteer(toAdd);
model.commitAddressBook();
return new CommandResult(String.format(MESSAGE_SUCCESS, toAdd));
}

@Override
public boolean equals(Object other) {
return other == this // short circuit if same object
|| (other instanceof AddVolunteerCommand // instanceof handles nulls
&& toAdd.equals(((AddVolunteerCommand) other).toAdd));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package seedu.address.logic.commands;

import static java.util.Objects.requireNonNull;

import java.util.List;

import seedu.address.commons.core.Messages;
import seedu.address.commons.core.index.Index;
import seedu.address.logic.CommandHistory;
import seedu.address.logic.commands.exceptions.CommandException;
import seedu.address.model.Model;
import seedu.address.model.volunteer.Volunteer;

/**
* Deletes a volunteer identified using it's displayed index from the address book.
*/
public class DeleteVolunteerCommand extends Command {

public static final String COMMAND_WORD = "delete";

public static final String MESSAGE_USAGE = COMMAND_WORD
+ ": Deletes the volunteer identified by the index number used in the displayed volunteer list.\n"
+ "Parameters: INDEX (must be a positive integer)\n"
+ "Example: " + COMMAND_WORD + " 1";

public static final String MESSAGE_DELETE_VOLUNTEER_SUCCESS = "Deleted Volunteer: %1$s";

private final Index targetIndex;

public DeleteVolunteerCommand(Index targetIndex) {
this.targetIndex = targetIndex;
}

@Override
public CommandResult execute(Model model, CommandHistory history) throws CommandException {
requireNonNull(model);
List<Volunteer> lastShownList = model.getFilteredVolunteerList();

if (targetIndex.getZeroBased() >= lastShownList.size()) {
throw new CommandException(Messages.MESSAGE_INVALID_VOLUNTEER_DISPLAYED_INDEX);
}

Volunteer volunteerToDelete = lastShownList.get(targetIndex.getZeroBased());
model.deleteVolunteer(volunteerToDelete);
model.commitAddressBook();
return new CommandResult(String.format(MESSAGE_DELETE_VOLUNTEER_SUCCESS, volunteerToDelete));
}

@Override
public boolean equals(Object other) {
return other == this // short circuit if same object
|| (other instanceof DeleteVolunteerCommand // instanceof handles nulls
&& targetIndex.equals(((DeleteVolunteerCommand) other).targetIndex)); // state check
}
}
Loading

0 comments on commit 84d9be0

Please sign in to comment.