Package com.mustafaiev.tair.cts.service

Source Code of com.mustafaiev.tair.cts.service.PayerService

package com.mustafaiev.tair.cts.service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.security.crypto.password.StandardPasswordEncoder;
import org.springframework.stereotype.Service;

import com.mustafaiev.tair.constant.Attributes;
import com.mustafaiev.tair.cts.constant.Constants;
import com.mustafaiev.tair.cts.dto.PayerDTO;
import com.mustafaiev.tair.cts.exeption.DataNotRetrievedException;
import com.mustafaiev.tair.cts.exeption.DataNotStoredException;
import com.mustafaiev.tair.cts.facade.IPayerFacade;
import com.mustafaiev.tair.cts.factory.CostTrackingSystemFacadeFactory;

@Service
public class PayerService {

  private static final Logger LOGGER = Logger.getLogger(PayerService.class);

  @Autowired
  private CostTrackingSystemFacadeFactory costTrackingSystemFacadeFactory;

  @Autowired
  private EmailSendService emailSendService;

  public List<PayerDTO> getPayers() throws DataNotRetrievedException {
    final List<PayerDTO> payers = getPayerFacade().retrievePayers();
    return payers;
  }

  public List<PayerDTO> getPayersForGroup(final Long id)
      throws DataNotRetrievedException {
    final List<PayerDTO> payers = getPayerFacade().retrievePayersForGroup(
        id);
    return payers;
  }

  public void savePayer(final PayerDTO payer) {
    try {
      getPayerFacade().savePayer(payer);
    } catch (final DataNotStoredException e) {
      LOGGER.error(e.getLocalizedMessage(), e);
    }
  }

  public void updatePayer(final PayerDTO payer) {
    try {
      getPayerFacade().updatePayer(payer);
    } catch (final DataNotStoredException e) {
      LOGGER.error(e.getLocalizedMessage(), e);
    }
  }

  public PayerDTO getPayer(final Long id) throws DataNotRetrievedException {
    return getPayerFacade().retrievePayer(id);
  }

  public PayerDTO findPayer(final String param)
      throws DataNotRetrievedException {
    return getPayerFacade().findPayer(param);
  }

  public PayerDTO retrieveByEmail(final String email)
      throws DataNotRetrievedException {
    return getPayerFacade().findPayer(email);
  }

  public PayerDTO retrieveActiveByEmail(final String email)
      throws DataNotRetrievedException {
    return getPayerFacade().retrieveActiveByEmail(email);
  }

  public boolean checkPassword(final String rawPassword,
      final String encodedPassword) {
    final StandardPasswordEncoder encoder = new StandardPasswordEncoder();
    return encoder.matches(rawPassword, encodedPassword);
  }

  public void registerPayer(final PayerDTO payer) {
    try {
      LOGGER.info("Payer registration process start");
      getPayerFacade().savePayer(payer);
      sendMail(payer);
      LOGGER.info("Payer registration process end");
    } catch (final DataNotStoredException e) {
      LOGGER.error(e.getLocalizedMessage(), e);
    }
  }

  public boolean isPayerExists(final String email)
      throws DataNotRetrievedException {
    final PayerDTO dto = findPayer(email);
    return dto != null;
  }

  private IPayerFacade getPayerFacade() {
    final IPayerFacade facade = this.costTrackingSystemFacadeFactory
        .getFacade(IPayerFacade.class);
    return facade;
  }

  private void sendMail(final PayerDTO dto) {
    LOGGER.info("Prepare email sending");
    final SimpleMailMessage msg = new SimpleMailMessage();
    msg.setTo(dto.getEmail());
    msg.setFrom(Constants.EMAIL_FROM);
    msg.setSubject(Constants.EMAIL_REGISTRATION_SUBJECT);
    final Map<Object, Object> templateVariables = new HashMap<Object, Object>();
    templateVariables.put(Attributes.PAYER, dto);
    templateVariables.put(Constants.EMAIL_TEMPLATE_FILE,
        "/registration_email_template.vm");
    this.emailSendService.send(msg, templateVariables);
  }
}
TOP

Related Classes of com.mustafaiev.tair.cts.service.PayerService

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.