You need to sign in to do that
Don't have an account?
Padmini S 26
Date Comparision in Apex Controller
Hi All,
I have implemented one Visualforce Page which display all the user with certain below condition.
User event startdate should not match with WorkOrder startdate. I am able to get list of user but not depend on criteria.
I wrote query for getting the user list : select Name, firstname,lastname, Skill__C, Technician_Location__c,Technician_Location__Latitude__s,Technician_Location__Longitude__s from User where Skill__C = :wo.Problem__c
I have written the query to get the all the task : select Id, Subject, isAllDayEvent, StartDateTime, EndDateTime from Event
I have retrieved the current record workorder by using the below query :SELECT Skill_Comparision__c ,Problem__c, Distance__c,Contact.Customer_Location__c,Contact.Customer_Location__Latitude__s,Contact.Customer_Location__Longitude__s,StartDate,EndDate FROM WorkOrder WHERE ID =: controller.getId()
Now I am not getting how to compare the WorkOrder startdate to Event Startdate. Please help on this issue.
Thanks in Advance.
I have implemented one Visualforce Page which display all the user with certain below condition.
User event startdate should not match with WorkOrder startdate. I am able to get list of user but not depend on criteria.
I wrote query for getting the user list : select Name, firstname,lastname, Skill__C, Technician_Location__c,Technician_Location__Latitude__s,Technician_Location__Longitude__s from User where Skill__C = :wo.Problem__c
I have written the query to get the all the task : select Id, Subject, isAllDayEvent, StartDateTime, EndDateTime from Event
I have retrieved the current record workorder by using the below query :SELECT Skill_Comparision__c ,Problem__c, Distance__c,Contact.Customer_Location__c,Contact.Customer_Location__Latitude__s,Contact.Customer_Location__Longitude__s,StartDate,EndDate FROM WorkOrder WHERE ID =: controller.getId()
Now I am not getting how to compare the WorkOrder startdate to Event Startdate. Please help on this issue.
Thanks in Advance.
List<Event> lstEvent = new List<Event>();
List<WorkOrder> lstWorkOrder = new List<WorkOrder>([SELECT Skill_Comparision__c ,Problem__c, Distance__c,Contact.Customer_Location__c,Contact.Customer_Location__Latitude__s,
Contact.Customer_Location__Longitude__s,StartDate,EndDate
FROM WorkOrder
WHERE ID =: controller.getId()]);
if(!lstWorkOrder.isEmpty())
for(Event objE : [SELECT Id, Subject, isAllDayEvent, StartDateTime, EndDateTime,
OwnerId, Owner.Name, Owner.firstname, Owner.lastname, Owner.Skill__C, Owner.Technician_Location__c, Owner.Technician_Location__Latitude__s, Owner.Technician_Location__Longitude__s
FROM Event
WHERE StartDateTime != :lstWorkOrder[0].StartDate
AND Owner.Skill__c = : lstWorkOrder[0].Problem__c])
{
// collect all events
lstEvent.add(objE);
}
Thank you for your reply.
I have tried with your code. But it is throwing error as No Such Column Skill__c. For all User object custom fields it is throwing error. I am not getting why user object custom fields are throwing error.
The Skill__c field is exists in my org. API name also Correct. Please Check below Visualforce Page.
VF Page:
<apex:page standardController="WorkOrder" extensions="userassigncontroller" >
<apex:form >
<apex:pageBlock >
<apex:pageblockTable value="{!techWrapperList}" var="t">
<apex:column headervalue="Select">
<input type="radio" name="sel" />
<apex:actionsupport action="{!process}" event="onchange" rerender="abc">
<apex:param name="select" value="{!t.tech.id}" assignTo="{!str}"/>
</apex:actionsupport>
</apex:column>
<apex:column headervalue="Technician Name">
<apex:outputText value="{!t.tech.name}" />
</apex:column>
<apex:column headervalue="Distance">
<apex:outputText value="{!t.distance} KM" />
</apex:column>
<apex:column headervalue="Distance">
<apex:outputText value="{!t.tech.Skill__c}" />
</apex:column>
</apex:pageblockTable>
</apex:pageBlock>
<apex:commandButton value="Save" action="{!SaveOwner}" disabled="{!flag}" id="abc"/>
</apex:form>
</apex:page>
Controller:
==============
public class userassigncontroller {
public WorkOrder wo;
Public Boolean flag {get;set;}
Public string str {get;set;}
public List<techWrapper> techWrapperList{get;set;}
public List<user> techList=new list<user>();
public List<Event> techactivitylist = new list<Event>();
public userassigncontroller(ApexPages.StandardController controller) {
techWrapperList=new List<techWrapper>();
wo = [SELECT Skill_Comparision__c ,Problem__c, Distance__c,Contact.Customer_Location__c,Contact.Customer_Location__Latitude__s,
Contact.Customer_Location__Longitude__s,StartDate,EndDate FROM WorkOrder WHERE ID =: controller.getId() ];
techList= [select Name, firstname,lastname, Skill__C, Technician_Location__c,Technician_Location__Latitude__s,Technician_Location__Longitude__s
from User where Skill__C = :wo.Problem__c ];
techactivitylist = [select Id, Subject, isAllDayEvent, StartDateTime, EndDateTime from Event where StartDateTime != :wo.StartDate ];
for(user u : techList){
Double totalDistance =calculateHaversineDistance(wo.Contact.Customer_Location__Latitude__s,wo.Contact.Customer_Location__Longitude__s,u.Technician_Location__Latitude__s,u.Technician_Location__Longitude__s);
techWrapperList.add(new techWrapper(u,totalDistance));
system.debug('**techWrapperList**'+techWrapperList);
}
}
public Decimal calculateHaversineDistance(Decimal lat1, Decimal lon1, Decimal lat2, Decimal lon2){
// Earth's radius varies from 6356.752 km at the poles to 6378.137 km at the equator
Double radius = 6371.00;
Double dLat = toRadians(lat2-lat1);
Double dLon = toRadians(lon2-lon1);
Double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(toRadians(lat1)) * Math.cos(toRadians(lat2)) *
Math.sin(dLon/2) * Math.sin(dLon/2);
Double c = 2 * Math.asin(Math.sqrt(a));
//double kmToMiles = 0.621371;
//return radius * c * kmToMiles;
return radius*c;
}
private Double toRadians(Decimal degree){
return degree * 3.1415926 / 180;
}
public class techWrapper{
public User tech{get; set;}
public Decimal distance{get;set;}
public Boolean Datecomparision {get;set;}
public techWrapper(User u, Decimal d ){
tech= u;
distance=d;
}
}
public PageReference process()
{
flag = false;
return null;
}
public PageReference SaveOwner()
{
flag =true;
if(str != null)
{
WorkOrder tUser = new WorkOrder(id = wo.ID , Ownerid = str);
update tUser;
PageReference page = new PageReference('/' + wo.ID);
page.setRedirect(true);
return page;
}
return null;
}
}