Package org.fenixedu.academic.service.services.alumni

Source Code of org.fenixedu.academic.service.services.alumni.RegisterAlumniData

/**
* Copyright © 2002 Instituto Superior Técnico
*
* This file is part of FenixEdu Academic.
*
* FenixEdu Academic is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* FenixEdu Academic is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with FenixEdu Academic.  If not, see <http://www.gnu.org/licenses/>.
*/
package org.fenixedu.academic.service.services.alumni;

import java.util.UUID;

import org.fenixedu.academic.domain.Alumni;
import org.fenixedu.academic.domain.AlumniIdentityCheckRequest;
import org.fenixedu.academic.domain.AlumniManager;
import org.fenixedu.academic.domain.Job;
import org.fenixedu.academic.domain.Person;
import org.fenixedu.academic.domain.contacts.EmailAddress;
import org.fenixedu.academic.domain.contacts.PartyContactType;
import org.fenixedu.academic.domain.contacts.Phone;
import org.fenixedu.academic.domain.contacts.PhysicalAddress;
import org.fenixedu.academic.domain.contacts.PhysicalAddressData;
import org.fenixedu.academic.domain.exceptions.DomainException;
import org.fenixedu.academic.domain.student.Student;
import org.fenixedu.academic.dto.alumni.AlumniAddressBean;
import org.fenixedu.academic.dto.alumni.AlumniIdentityCheckRequestBean;
import org.fenixedu.academic.dto.alumni.AlumniJobBean;
import org.fenixedu.academic.dto.alumni.publicAccess.AlumniPasswordBean;
import org.fenixedu.academic.dto.alumni.publicAccess.AlumniPublicAccessBean;
import org.fenixedu.academic.service.services.commons.alumni.AlumniNotificationService;
import org.fenixedu.academic.service.services.exceptions.FenixServiceException;

import pt.ist.fenixframework.Atomic;

public class RegisterAlumniData extends AlumniNotificationService {

    @Atomic
    public static Alumni run(Alumni alumni, final UUID urlRequestToken) throws FenixServiceException {

        if (alumni == null) {
            throw new FenixServiceException("alumni.uuid.update.alumni.null");
        }

        alumni.setUrlRequestToken(urlRequestToken);
        return alumni;
    }

    @Atomic
    public static Alumni run(Alumni alumni, final Boolean registered) throws FenixServiceException {

        alumni.setRegistered(registered);
        if (registered) {
            sendRegistrationSuccessMail(alumni);
        }
        return alumni;
    }

    @Atomic
    public static Alumni run(final Student student) {
        return new AlumniManager().registerAlumni(student);
    }

    @Atomic
    public static Alumni run(final Integer studentNumber, final String documentIdNumber, final String email) {

        final Alumni alumni = new AlumniManager().registerAlumni(studentNumber, documentIdNumber, email);
        sendPublicAccessMail(alumni, email);
        return alumni;
    }

    @Atomic
    public static void run(final AlumniPublicAccessBean alumniBean, Boolean isEmployed) throws FenixServiceException {
        Person person = alumniBean.getAlumni().getStudent().getPerson();
        if (person == null) {
            throw new FenixServiceException("alumni.partyContact.creation.person.null");
        }

        try {
            processAlumniPhone(alumniBean, person);
            processAlumniAddress(alumniBean, person);
            if (isEmployed) {
                processAlumniJob(alumniBean);
            }
            alumniBean.getAlumni().setIsEmployed(isEmployed);
        } catch (DomainException e) {
            throw new FenixServiceException(e.getMessage());
        }

    }

    @Atomic
    public static void run(final AlumniIdentityCheckRequestBean bean) {

        final Alumni alumni = new AlumniManager().checkAlumniIdentity(bean.getDocumentIdNumber(), bean.getContactEmail());
        if (!alumni.hasAnyPendingIdentityRequests()) {

            AlumniIdentityCheckRequest identityRequest =
                    new AlumniIdentityCheckRequest(bean.getContactEmail(), bean.getDocumentIdNumber(), bean.getFullName(),
                            bean.getDateOfBirthYearMonthDay(), bean.getDistrictOfBirth(), bean.getDistrictSubdivisionOfBirth(),
                            bean.getParishOfBirth(), bean.getSocialSecurityNumber(), bean.getNameOfFather(),
                            bean.getNameOfMother(), bean.getRequestType());

            identityRequest.setAlumni(alumni);
            if (identityRequest.isValid()) {
                identityRequest.validate(Boolean.TRUE);
                sendIdentityCheckEmail(identityRequest, Boolean.TRUE);
            }

        } else {
            throw new DomainException("alumni.has.pending.identity.requests");
        }
    }

    @Atomic
    public static void run(final AlumniPasswordBean bean) {

        bean.getAlumni().setRegistered(Boolean.TRUE);
        if (!bean.getAlumni().hasAnyPendingIdentityRequests()) {

            final EmailAddress personalEmail = bean.getAlumni().getPersonalEmail();

            String email;

            if (personalEmail == null) {
                email = bean.getAlumni().getStudent().getPerson().getEmailForSendingEmails();
            } else {
                email = personalEmail.getValue();
            }

            AlumniIdentityCheckRequest identityRequest =
                    new AlumniIdentityCheckRequest(email, bean.getAlumni().getStudent().getPerson().getDocumentIdNumber(),
                            bean.getFullName(), bean.getDateOfBirthYearMonthDay(), bean.getDistrictOfBirth(),
                            bean.getDistrictSubdivisionOfBirth(), bean.getParishOfBirth(), bean.getSocialSecurityNumber(),
                            bean.getNameOfFather(), bean.getNameOfMother(), bean.getRequestType());

            identityRequest.setAlumni(bean.getAlumni());
            if (identityRequest.isValid()) {
                identityRequest.validate(Boolean.TRUE);
                sendIdentityCheckEmail(identityRequest, Boolean.TRUE);
            }
        }
    }

    private static void processAlumniJob(final AlumniPublicAccessBean alumniBean) {

        if (alumniBean.getCurrentJob() == null) {
            final AlumniJobBean jobBean = alumniBean.getJobBean();
            new Job(jobBean.getAlumni().getStudent().getPerson(), jobBean.getEmployerName(), jobBean.getCity(),
                    jobBean.getCountry(), jobBean.getChildBusinessArea(), jobBean.getParentBusinessArea(), jobBean.getPosition(),
                    jobBean.getBeginDateAsLocalDate(), jobBean.getEndDateAsLocalDate(), jobBean.getApplicationType(),
                    jobBean.getContractType(), jobBean.getSalary());
        } else {
            final AlumniJobBean jobBean = alumniBean.getJobBean();
            alumniBean.getCurrentJob().setEmployerName(jobBean.getEmployerName());
            alumniBean.getCurrentJob().setCity(jobBean.getCity());
            alumniBean.getCurrentJob().setCountry(jobBean.getCountry());
            alumniBean.getCurrentJob().setBusinessArea(jobBean.getChildBusinessArea());
            alumniBean.getCurrentJob().setParentBusinessArea(jobBean.getParentBusinessArea());
            alumniBean.getCurrentJob().setPosition(jobBean.getPosition());
            alumniBean.getCurrentJob().setBeginDate(jobBean.getBeginDateAsLocalDate());
            alumniBean.getCurrentJob().setEndDate(jobBean.getEndDateAsLocalDate());
            alumniBean.getCurrentJob().setJobApplicationType(jobBean.getApplicationType());
            alumniBean.getCurrentJob().setContractType(jobBean.getContractType());
            alumniBean.getCurrentJob().setSalary(jobBean.getSalary());

        }
    }

    private static void processAlumniAddress(final AlumniPublicAccessBean alumniBean, final Person person) {

        final AlumniAddressBean addressBean = alumniBean.getAddressBean();
        if (alumniBean.getCurrentPhysicalAddress() == null) {
            PhysicalAddress.createPhysicalAddress(person,
                    new PhysicalAddressData(addressBean.getAddress(), addressBean.getAreaCode(), addressBean.getAreaOfAreaCode(),
                            null), PartyContactType.PERSONAL, false);
        } else {
            PhysicalAddress address = alumniBean.getCurrentPhysicalAddress();
            address.setAddress(addressBean.getAddress());
            address.setAreaCode(addressBean.getAreaCode());
            address.setAreaOfAreaCode(addressBean.getAreaOfAreaCode());
            address.setCountryOfResidence(addressBean.getCountry());
        }
    }

    private static void processAlumniPhone(final AlumniPublicAccessBean alumniBean, final Person person) {

        if (alumniBean.getCurrentPhone() == null) {
            Phone.createPhone(person, alumniBean.getPhone(), PartyContactType.PERSONAL, true);
        } else {
            alumniBean.getCurrentPhone().setNumber(alumniBean.getPhone());
        }
    }

    // Service Invokers migrated from Berserk

    private static final RegisterAlumniData serviceInstance = new RegisterAlumniData();

    @Atomic
    public static Alumni runRegisterAlumniData(Alumni alumni, UUID urlRequestToken) throws FenixServiceException {
        return serviceInstance.run(alumni, urlRequestToken);
    }

}
TOP

Related Classes of org.fenixedu.academic.service.services.alumni.RegisterAlumniData

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.