Search in sources :

Example 11 with Lead

use of com.axelor.apps.crm.db.Lead in project axelor-open-suite by axelor.

the class MapRestCrm method getLeads.

@Path("/lead")
@GET
@Produces(MediaType.APPLICATION_JSON)
public JsonNode getLeads() {
    ObjectNode mainNode = factory.objectNode();
    try {
        List<? extends Lead> leads = leadRepo.all().fetch();
        ArrayNode arrayNode = factory.arrayNode();
        for (Lead lead : leads) {
            String fullName = lead.getFirstName() + " " + lead.getName();
            if (lead.getEnterpriseName() != null) {
                fullName = lead.getEnterpriseName() + "<br/>" + fullName;
            }
            ObjectNode objectNode = factory.objectNode();
            objectNode.put("fullName", fullName);
            objectNode.put("fixedPhone", lead.getFixedPhone() != null ? lead.getFixedPhone() : " ");
            if (lead.getEmailAddress() != null) {
                objectNode.put("emailAddress", lead.getEmailAddress().getAddress());
            }
            StringBuilder addressString = new StringBuilder();
            if (lead.getPrimaryAddress() != null) {
                addressString.append(lead.getPrimaryAddress() + "<br/>");
            }
            if (lead.getPrimaryCity() != null) {
                addressString.append(lead.getPrimaryCity() + "<br/>");
            }
            if (lead.getPrimaryPostalCode() != null) {
                addressString.append(lead.getPrimaryPostalCode() + "<br/>");
            }
            if (lead.getPrimaryState() != null) {
                addressString.append(lead.getPrimaryState() + "<br/>");
            }
            if (lead.getPrimaryCountry() != null) {
                addressString.append(lead.getPrimaryCountry().getName());
            }
            String addressFullname = addressString.toString();
            objectNode.put("address", addressFullname);
            objectNode.put("pinColor", "yellow");
            objectNode.put("pinChar", I18n.get(ITranslation.PIN_CHAR_LEAD));
            Map<String, Object> result = Beans.get(MapService.class).getMap(addressFullname);
            if (result != null) {
                objectNode.put("latit", (BigDecimal) result.get("latitude"));
                objectNode.put("longit", (BigDecimal) result.get("longitude"));
            }
            arrayNode.add(objectNode);
        }
        mapRestService.setData(mainNode, arrayNode);
    } catch (Exception e) {
        mapRestService.setError(mainNode, e);
    }
    return mainNode;
}
Also used : ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) Lead(com.axelor.apps.crm.db.Lead) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode) MapService(com.axelor.apps.base.service.MapService) Path(javax.ws.rs.Path) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET)

Example 12 with Lead

use of com.axelor.apps.crm.db.Lead in project axelor-open-suite by axelor.

the class CampaignServiceImpl method generateEvents.

@Transactional
public void generateEvents(Campaign campaign) {
    LocalDateTime eventStartDateTime = campaign.getEventStartDateTime();
    LocalDateTime eventEndDateTime = campaign.getEventEndDateTime();
    Long duration = campaign.getDuration();
    for (Partner partner : campaign.getPartnerSet()) {
        Event event = new Event();
        if (partner.getIsContact()) {
            event.setContactPartner(partner);
        } else {
            event.setPartner(partner);
        }
        event.setUser(campaign.getGenerateEventPerPartnerOrLead() ? partner.getUser() : campaign.getEventUser());
        event.setSubject(campaign.getSubject());
        event.setTypeSelect(campaign.getEventTypeSelect());
        event.setStartDateTime(eventStartDateTime);
        event.setEndDateTime(eventEndDateTime);
        event.setDuration(duration);
        event.setTeam(campaign.getGenerateEventPerPartnerOrLead() ? partner.getTeam() : campaign.getTeam());
        event.setCampaign(campaign);
        event.setStatusSelect(1);
        eventRepo.save(event);
    }
    for (Lead lead : campaign.getLeadSet()) {
        Event event = new Event();
        event.setLead(lead);
        event.setUser(campaign.getGenerateEventPerPartnerOrLead() ? lead.getUser() : campaign.getEventUser());
        event.setSubject(campaign.getSubject());
        event.setTypeSelect(campaign.getEventTypeSelect());
        event.setStartDateTime(eventStartDateTime);
        event.setEndDateTime(eventEndDateTime);
        event.setDuration(duration);
        event.setTeam(campaign.getGenerateEventPerPartnerOrLead() ? lead.getTeam() : campaign.getTeam());
        event.setCampaign(campaign);
        event.setStatusSelect(1);
        eventRepo.save(event);
    }
}
Also used : LocalDateTime(java.time.LocalDateTime) Lead(com.axelor.apps.crm.db.Lead) Event(com.axelor.apps.crm.db.Event) Partner(com.axelor.apps.base.db.Partner) Transactional(com.google.inject.persist.Transactional)

Example 13 with Lead

use of com.axelor.apps.crm.db.Lead in project axelor-open-suite by axelor.

the class CampaignServiceImpl method addNotParticipatingTargets.

@Override
@Transactional
public void addNotParticipatingTargets(Campaign campaign, Campaign campaignContext) {
    for (Partner partner : campaignContext.getInvitedPartnerSet()) {
        if (partner.isSelected()) {
            campaign.addNotParticipatingPartnerSetItem(partner);
            campaign.removeInvitedPartnerSetItem(partner);
        }
    }
    for (Lead lead : campaignContext.getInvitedLeadSet()) {
        if (lead.isSelected()) {
            campaign.addNotParticipatingLeadSetItem(lead);
            campaign.removeInvitedLeadSetItem(lead);
        }
    }
    Beans.get(CampaignRepository.class).save(campaign);
}
Also used : Lead(com.axelor.apps.crm.db.Lead) CampaignRepository(com.axelor.apps.marketing.db.repo.CampaignRepository) Partner(com.axelor.apps.base.db.Partner) Transactional(com.google.inject.persist.Transactional)

Example 14 with Lead

use of com.axelor.apps.crm.db.Lead in project axelor-open-suite by axelor.

the class CampaignServiceImpl method inviteAllTargets.

@Override
@Transactional
public void inviteAllTargets(Campaign campaign) {
    Set<Partner> partners = campaign.getPartners();
    Set<Partner> notParticipatingPartnerSet = campaign.getNotParticipatingPartnerSet();
    for (Partner partner : campaign.getPartnerSet()) {
        if (!partners.contains(partner) && !notParticipatingPartnerSet.contains(partner)) {
            campaign.addInvitedPartnerSetItem(partner);
        }
    }
    Set<Lead> leads = campaign.getLeads();
    Set<Lead> notParticipatingLeadSet = campaign.getNotParticipatingLeadSet();
    for (Lead lead : campaign.getLeadSet()) {
        if (!leads.contains(lead) && !notParticipatingLeadSet.contains(lead)) {
            campaign.addInvitedLeadSetItem(lead);
        }
    }
    Beans.get(CampaignRepository.class).save(campaign);
}
Also used : Lead(com.axelor.apps.crm.db.Lead) CampaignRepository(com.axelor.apps.marketing.db.repo.CampaignRepository) Partner(com.axelor.apps.base.db.Partner) Transactional(com.google.inject.persist.Transactional)

Example 15 with Lead

use of com.axelor.apps.crm.db.Lead in project axelor-open-suite by axelor.

the class CampaignController method markLeadPresent.

public void markLeadPresent(ActionRequest request, ActionResponse response) {
    Campaign campaign = request.getContext().getParent().asType(Campaign.class);
    Lead lead = request.getContext().asType(Lead.class);
    lead = Beans.get(LeadRepository.class).find(lead.getId());
    try {
        Beans.get(CampaignService.class).markLeadPresent(Beans.get(CampaignRepository.class).find(campaign.getId()), lead);
        response.setReload(true);
    } catch (Exception e) {
        TraceBackService.trace(response, e);
    }
}
Also used : CampaignService(com.axelor.apps.marketing.service.CampaignService) Campaign(com.axelor.apps.marketing.db.Campaign) Lead(com.axelor.apps.crm.db.Lead)

Aggregations

Lead (com.axelor.apps.crm.db.Lead)24 Partner (com.axelor.apps.base.db.Partner)7 Transactional (com.google.inject.persist.Transactional)6 LeadService (com.axelor.apps.crm.service.LeadService)4 CampaignRepository (com.axelor.apps.marketing.db.repo.CampaignRepository)4 AxelorException (com.axelor.exception.AxelorException)4 LeadRepository (com.axelor.apps.crm.db.repo.LeadRepository)3 Map (java.util.Map)3 Address (com.axelor.apps.base.db.Address)2 AppBase (com.axelor.apps.base.db.AppBase)2 AppBaseService (com.axelor.apps.base.service.app.AppBaseService)2 EmailAddress (com.axelor.apps.message.db.EmailAddress)2 Context (com.axelor.rpc.Context)2 Company (com.axelor.apps.base.db.Company)1 Country (com.axelor.apps.base.db.Country)1 CompanyRepository (com.axelor.apps.base.db.repo.CompanyRepository)1 MapService (com.axelor.apps.base.service.MapService)1 PartnerService (com.axelor.apps.base.service.PartnerService)1 Event (com.axelor.apps.crm.db.Event)1 Campaign (com.axelor.apps.marketing.db.Campaign)1