use of fi.otavanopisto.pyramus.domainmodel.base.BillingDetails in project pyramus by otavanopisto.
the class BillingDetailsDAO method listByStudent.
public List<BillingDetails> listByStudent(Student student) {
EntityManager entityManager = getEntityManager();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<BillingDetails> criteria = criteriaBuilder.createQuery(BillingDetails.class);
Root<CourseStudent> root = criteria.from(CourseStudent.class);
criteria.select(root.get(CourseStudent_.billingDetails));
criteria.where(criteriaBuilder.equal(root.get(CourseStudent_.student), student));
criteria.groupBy(root.get(CourseStudent_.billingDetails));
return entityManager.createQuery(criteria).getResultList();
}
use of fi.otavanopisto.pyramus.domainmodel.base.BillingDetails in project pyramus by otavanopisto.
the class OrganizationRESTService method createOrganization.
@Path("/")
@POST
@RESTPermit(OrganizationPermissions.CREATE_ORGANIZATION)
public Response createOrganization(fi.otavanopisto.pyramus.rest.model.Organization entity) {
if ((entity == null) || StringUtils.isBlank(entity.getName())) {
return Response.status(Status.BAD_REQUEST).build();
}
EducationType educationType = null;
if ((entity.getEducationType() != null) && (entity.getEducationType().getId() != null)) {
educationType = educationTypeDAO.findById(entity.getEducationType().getId());
}
Organization organization = organizationDAO.create(entity.getName(), educationType);
if (entity.getBillingDetails() != null) {
BillingDetails billingDetails = billingDetailsDAO.create(entity.getBillingDetails().getPersonName(), entity.getBillingDetails().getCompanyName(), entity.getBillingDetails().getStreetAddress1(), entity.getBillingDetails().getStreetAddress2(), entity.getBillingDetails().getPostalCode(), entity.getBillingDetails().getCity(), entity.getBillingDetails().getRegion(), entity.getBillingDetails().getCountry(), entity.getBillingDetails().getPhoneNumber(), entity.getBillingDetails().getEmailAddress(), entity.getBillingDetails().getElectronicBillingAddress(), entity.getBillingDetails().getElectronicBillingOperator(), entity.getBillingDetails().getCompanyIdentifier(), entity.getBillingDetails().getReferenceNumber(), entity.getBillingDetails().getNotes());
organization = organizationDAO.updateBillingDetails(organization, billingDetails);
}
// Contract Periods
List<fi.otavanopisto.pyramus.rest.model.OrganizationContractPeriod> updatedContractPeriods = CollectionUtils.isNotEmpty(entity.getContractPeriods()) ? entity.getContractPeriods() : Collections.emptyList();
for (fi.otavanopisto.pyramus.rest.model.OrganizationContractPeriod updatedContractPeriod : updatedContractPeriods) {
Date begin = updatedContractPeriod.getBegin() != null ? java.sql.Date.valueOf(updatedContractPeriod.getBegin()) : null;
Date end = updatedContractPeriod.getEnd() != null ? java.sql.Date.valueOf(updatedContractPeriod.getEnd()) : null;
organizationContractPeriodDAO.create(organization, begin, end);
}
// Contact Persons
List<fi.otavanopisto.pyramus.rest.model.OrganizationContactPerson> contactPersons = CollectionUtils.isNotEmpty(entity.getContactPersons()) ? entity.getContactPersons() : Collections.emptyList();
for (fi.otavanopisto.pyramus.rest.model.OrganizationContactPerson contactPerson : contactPersons) {
fi.otavanopisto.pyramus.rest.model.OrganizationContactPersonType contactPersonType = contactPerson.getType();
OrganizationContactPersonType type = contactPersonType != null ? OrganizationContactPersonType.valueOf(contactPersonType.name()) : null;
organizationContactPersonDAO.create(organization, type, contactPerson.getName(), contactPerson.getEmail(), contactPerson.getPhone(), contactPerson.getTitle());
}
return Response.ok(objectFactory.createModel(organization)).build();
}
use of fi.otavanopisto.pyramus.domainmodel.base.BillingDetails in project pyramus by otavanopisto.
the class OrganizationRESTService method updateOrganization.
@Path("/{ID:[0-9]*}")
@PUT
@Consumes(MediaType.APPLICATION_JSON)
@RESTPermit(OrganizationPermissions.UPDATE_ORGANIZATION)
public Response updateOrganization(@PathParam("ID") Long id, fi.otavanopisto.pyramus.rest.model.Organization entity) {
if (entity == null) {
return Response.status(Status.BAD_REQUEST).build();
}
String name = entity.getName();
if (StringUtils.isBlank(name) || entity.getBillingDetails() == null) {
return Response.status(Status.BAD_REQUEST).build();
}
Organization organization = organizationDAO.findById(id);
if (organization == null || organization.getArchived() || !UserUtils.canAccessOrganization(sessionController.getUser(), organization)) {
return Response.status(Status.NOT_FOUND).build();
}
EducationType educationType = organization.getEducationType();
if ((entity.getEducationType() != null) && (entity.getEducationType().getId() != null)) {
educationType = educationTypeDAO.findById(entity.getEducationType().getId());
}
if (organization.getBillingDetails() == null) {
BillingDetails billingDetails = billingDetailsDAO.create(entity.getBillingDetails().getPersonName(), entity.getBillingDetails().getCompanyName(), entity.getBillingDetails().getStreetAddress1(), entity.getBillingDetails().getStreetAddress2(), entity.getBillingDetails().getPostalCode(), entity.getBillingDetails().getCity(), entity.getBillingDetails().getRegion(), entity.getBillingDetails().getCountry(), entity.getBillingDetails().getPhoneNumber(), entity.getBillingDetails().getEmailAddress(), entity.getBillingDetails().getElectronicBillingAddress(), entity.getBillingDetails().getElectronicBillingOperator(), entity.getBillingDetails().getCompanyIdentifier(), entity.getBillingDetails().getReferenceNumber(), entity.getBillingDetails().getNotes());
organization = organizationDAO.updateBillingDetails(organization, billingDetails);
} else {
BillingDetails billingDetails = organization.getBillingDetails();
billingDetails.setPersonName(entity.getBillingDetails().getPersonName());
billingDetails.setCompanyName(entity.getBillingDetails().getCompanyName());
billingDetails.setStreetAddress1(entity.getBillingDetails().getStreetAddress1());
billingDetails.setStreetAddress2(entity.getBillingDetails().getStreetAddress2());
billingDetails.setPostalCode(entity.getBillingDetails().getPostalCode());
billingDetails.setCity(entity.getBillingDetails().getCity());
billingDetails.setRegion(entity.getBillingDetails().getRegion());
billingDetails.setCountry(entity.getBillingDetails().getCountry());
billingDetails.setPhoneNumber(entity.getBillingDetails().getPhoneNumber());
billingDetails.setEmailAddress(entity.getBillingDetails().getEmailAddress());
billingDetails.setElectronicBillingAddress(entity.getBillingDetails().getElectronicBillingAddress());
billingDetails.setElectronicBillingOperator(entity.getBillingDetails().getElectronicBillingOperator());
billingDetails.setCompanyIdentifier(entity.getBillingDetails().getCompanyIdentifier());
billingDetails.setReferenceNumber(entity.getBillingDetails().getReferenceNumber());
billingDetails.setNotes(entity.getBillingDetails().getNotes());
}
organization = organizationDAO.update(organization, name, educationType);
// Update Contract Periods
List<OrganizationContractPeriod> existingContractPeriods = organizationContractPeriodDAO.listBy(organization);
List<fi.otavanopisto.pyramus.rest.model.OrganizationContractPeriod> updatedContractPeriods = CollectionUtils.isNotEmpty(entity.getContractPeriods()) ? entity.getContractPeriods() : Collections.emptyList();
for (fi.otavanopisto.pyramus.rest.model.OrganizationContractPeriod updatedContractPeriod : updatedContractPeriods) {
Date begin = updatedContractPeriod.getBegin() != null ? java.sql.Date.valueOf(updatedContractPeriod.getBegin()) : null;
Date end = updatedContractPeriod.getEnd() != null ? java.sql.Date.valueOf(updatedContractPeriod.getEnd()) : null;
if ((updatedContractPeriod.getId() == null) || NumberUtils.LONG_MINUS_ONE.equals(updatedContractPeriod.getId())) {
organizationContractPeriodDAO.create(organization, begin, end);
} else {
OrganizationContractPeriod contractPeriod = organizationContractPeriodDAO.findById(updatedContractPeriod.getId());
organizationContractPeriodDAO.update(contractPeriod, begin, end);
}
}
Set<Long> remainingContractPeriodIds = updatedContractPeriods.stream().map(contractPeriod -> contractPeriod.getId()).collect(Collectors.toSet());
existingContractPeriods.forEach(contractPeriod -> {
if (!remainingContractPeriodIds.contains(contractPeriod.getId())) {
organizationContractPeriodDAO.delete(contractPeriod);
}
});
// Update Contact Persons
List<OrganizationContactPerson> existingContactPersons = organizationContactPersonDAO.listBy(organization);
List<fi.otavanopisto.pyramus.rest.model.OrganizationContactPerson> updatedContactPersons = CollectionUtils.isNotEmpty(entity.getContactPersons()) ? entity.getContactPersons() : Collections.emptyList();
for (fi.otavanopisto.pyramus.rest.model.OrganizationContactPerson updatedContactPerson : updatedContactPersons) {
fi.otavanopisto.pyramus.rest.model.OrganizationContactPersonType contactPersonType = updatedContactPerson.getType();
OrganizationContactPersonType type = contactPersonType != null ? OrganizationContactPersonType.valueOf(contactPersonType.name()) : null;
if ((updatedContactPerson.getId() == null) || NumberUtils.LONG_MINUS_ONE.equals(updatedContactPerson.getId())) {
organizationContactPersonDAO.create(organization, type, updatedContactPerson.getName(), updatedContactPerson.getEmail(), updatedContactPerson.getPhone(), updatedContactPerson.getTitle());
} else {
OrganizationContactPerson contactPerson = organizationContactPersonDAO.findById(updatedContactPerson.getId());
organizationContactPersonDAO.update(contactPerson, type, updatedContactPerson.getName(), updatedContactPerson.getEmail(), updatedContactPerson.getPhone(), updatedContactPerson.getTitle());
}
}
Set<Long> remainingIds = updatedContactPersons.stream().map(contactPerson -> contactPerson.getId()).collect(Collectors.toSet());
existingContactPersons.forEach(contactPerson -> {
if (!remainingIds.contains(contactPerson.getId())) {
organizationContactPersonDAO.delete(contactPerson);
}
});
return Response.ok(objectFactory.createModel(organization)).build();
}
use of fi.otavanopisto.pyramus.domainmodel.base.BillingDetails in project pyramus by otavanopisto.
the class SchoolRESTService method createSchool.
@Path("/schools")
@POST
@RESTPermit(SchoolPermissions.CREATE_SCHOOL)
public Response createSchool(fi.otavanopisto.pyramus.rest.model.School entity) {
if (entity == null) {
return Response.status(Status.BAD_REQUEST).build();
}
if (entity.getFieldId() == null) {
return Response.status(Status.BAD_REQUEST).build();
}
String code = entity.getCode();
String name = entity.getName();
if (StringUtils.isBlank(code) || StringUtils.isBlank(name)) {
return Response.status(Status.BAD_REQUEST).build();
}
SchoolField schoolField = schoolController.findSchoolFieldById(entity.getFieldId());
if (schoolField == null) {
return Response.status(Status.BAD_REQUEST).build();
}
BillingDetails billingDetails = null;
School school = schoolController.createSchool(code, name, schoolField, billingDetails);
if (entity.getTags() != null) {
schoolController.updateSchoolTags(school, entity.getTags());
}
if (entity.getVariables() != null) {
Set<String> variableKeys = entity.getVariables().keySet();
for (String variableKey : variableKeys) {
SchoolVariableKey schoolVariableKey = schoolController.findSchoolVariableKeyByVariableKey(variableKey);
if (schoolVariableKey == null) {
return Response.status(Status.BAD_REQUEST).build();
}
schoolController.createSchoolVariable(school, schoolVariableKey, entity.getVariables().get(variableKey));
}
}
schoolController.updateSchoolAdditionalContactInfo(school, entity.getAdditionalContactInfo());
return Response.ok(objectFactory.createModel(school)).build();
}
use of fi.otavanopisto.pyramus.domainmodel.base.BillingDetails in project pyramus by otavanopisto.
the class CreateSchoolJSONRequestController method process.
/**
* Processes the request to create a new grading scale.
*
* @param requestContext The JSON request context
*/
public void process(JSONRequestContext requestContext) {
SchoolDAO schoolDAO = DAOFactory.getInstance().getSchoolDAO();
SchoolFieldDAO schoolFieldDAO = DAOFactory.getInstance().getSchoolFieldDAO();
SchoolVariableDAO schoolVariableDAO = DAOFactory.getInstance().getSchoolVariableDAO();
AddressDAO addressDAO = DAOFactory.getInstance().getAddressDAO();
EmailDAO emailDAO = DAOFactory.getInstance().getEmailDAO();
PhoneNumberDAO phoneNumberDAO = DAOFactory.getInstance().getPhoneNumberDAO();
TagDAO tagDAO = DAOFactory.getInstance().getTagDAO();
ContactTypeDAO contactTypeDAO = DAOFactory.getInstance().getContactTypeDAO();
BillingDetailsDAO billingDetailsDAO = DAOFactory.getInstance().getBillingDetailsDAO();
String schoolCode = requestContext.getString("code");
String schoolName = requestContext.getString("name");
String tagsText = requestContext.getString("tags");
Long schoolFieldId = requestContext.getLong("schoolFieldId");
SchoolField schoolField = null;
if (schoolFieldId != null && schoolFieldId.intValue() >= 0)
schoolField = schoolFieldDAO.findById(schoolFieldId);
Set<Tag> tagEntities = new HashSet<>();
if (!StringUtils.isBlank(tagsText)) {
List<String> tags = Arrays.asList(tagsText.split("[\\ ,]"));
for (String tag : tags) {
if (!StringUtils.isBlank(tag)) {
Tag tagEntity = tagDAO.findByText(tag.trim());
if (tagEntity == null)
tagEntity = tagDAO.create(tag);
tagEntities.add(tagEntity);
}
}
}
String billingPersonName = requestContext.getString("billingDetailsPersonName");
String billingCompanyName = requestContext.getString("billingDetailsCompanyName");
String billingStreetAddress1 = requestContext.getString("billingDetailsStreetAddress1");
String billingStreetAddress2 = requestContext.getString("billingDetailsStreetAddress2");
String billingPostalCode = requestContext.getString("billingDetailsPostalCode");
String billingCity = requestContext.getString("billingDetailsCity");
String billingRegion = requestContext.getString("billingDetailsRegion");
String billingCountry = requestContext.getString("billingDetailsCountry");
String billingPhoneNumber = requestContext.getString("billingDetailsPhoneNumber");
String billingEmailAddress = requestContext.getString("billingDetailsEmailAddress");
String billingElectronicBillingAddress = requestContext.getString("billingDetailsElectronicBillingAddress");
String billingElectronicBillingOperator = requestContext.getString("billingDetailsElectronicBillingOperator");
String billingCompanyIdentifier = requestContext.getString("billingDetailsCompanyIdentifier");
String billingReferenceNumber = requestContext.getString("billingDetailsReferenceNumber");
String billingNotes = requestContext.getString("billingDetailsNotes");
BillingDetails billingDetails = billingDetailsDAO.create(billingPersonName, billingCompanyName, billingStreetAddress1, billingStreetAddress2, billingPostalCode, billingCity, billingRegion, billingCountry, billingPhoneNumber, billingEmailAddress, billingElectronicBillingAddress, billingElectronicBillingOperator, billingCompanyIdentifier, billingReferenceNumber, billingNotes);
School school = schoolDAO.create(schoolCode, schoolName, schoolField, billingDetails);
// Tags
schoolDAO.updateTags(school, tagEntities);
// Addresses
int addressCount = requestContext.getInteger("addressTable.rowCount");
for (int i = 0; i < addressCount; i++) {
String colPrefix = "addressTable." + i;
Boolean defaultAddress = requestContext.getBoolean(colPrefix + ".defaultAddress");
ContactType contactType = contactTypeDAO.findById(requestContext.getLong(colPrefix + ".contactTypeId"));
String name = requestContext.getString(colPrefix + ".name");
String street = requestContext.getString(colPrefix + ".street");
String postal = requestContext.getString(colPrefix + ".postal");
String city = requestContext.getString(colPrefix + ".city");
String country = requestContext.getString(colPrefix + ".country");
boolean hasAddress = name != null || street != null || postal != null || city != null || country != null;
if (hasAddress) {
addressDAO.create(school.getContactInfo(), contactType, name, street, postal, city, country, defaultAddress);
}
}
// Email addresses
int emailCount = requestContext.getInteger("emailTable.rowCount");
for (int i = 0; i < emailCount; i++) {
String colPrefix = "emailTable." + i;
Boolean defaultAddress = requestContext.getBoolean(colPrefix + ".defaultAddress");
ContactType contactType = contactTypeDAO.findById(requestContext.getLong(colPrefix + ".contactTypeId"));
String email = requestContext.getString(colPrefix + ".email");
// Trim the email address
email = email != null ? email.trim() : null;
if (email != null) {
emailDAO.create(school.getContactInfo(), contactType, defaultAddress, email);
}
}
// Phone numbers
int phoneCount = requestContext.getInteger("phoneTable.rowCount");
for (int i = 0; i < phoneCount; i++) {
String colPrefix = "phoneTable." + i;
Boolean defaultNumber = requestContext.getBoolean(colPrefix + ".defaultNumber");
ContactType contactType = contactTypeDAO.findById(requestContext.getLong(colPrefix + ".contactTypeId"));
String number = requestContext.getString(colPrefix + ".phone");
if (number != null) {
phoneNumberDAO.create(school.getContactInfo(), contactType, defaultNumber, number);
}
}
// Variables
Integer variableCount = requestContext.getInteger("variablesTable.rowCount");
if (variableCount != null) {
for (int i = 0; i < variableCount; i++) {
String colPrefix = "variablesTable." + i;
String key = requestContext.getRequest().getParameter(colPrefix + ".key");
String value = requestContext.getRequest().getParameter(colPrefix + ".value");
schoolVariableDAO.setVariable(school, key, value);
}
}
String redirectURL = requestContext.getRequest().getContextPath() + "/settings/editschool.page?school=" + school.getId();
String refererAnchor = requestContext.getRefererAnchor();
if (!StringUtils.isBlank(refererAnchor))
redirectURL += "#" + refererAnchor;
requestContext.setRedirectURL(redirectURL);
}
Aggregations