Advertisement
Guest User

Untitled

a guest
Sep 17th, 2014
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.36 KB | None | 0 0
  1. public void SaveAssignedPercentage()
  2. {
  3.  
  4. string errorSavingAssignmentsMessage = '';
  5.  
  6. try
  7. {
  8. List<Team_Member_Projects__c> tmpList = new List<Team_Member_Projects__c>();
  9. List<Team_Member_Projects__c> tmpListToDelete = new List<Team_Member_Projects__c>();
  10.  
  11.  
  12. if(AssignByRoleModifiedTeamMemberIds != '' && AssignByRoleModifiedTeamMemberIds != null)
  13. {
  14. Set<string> tmIds = new Set<string>(AssignByRoleModifiedTeamMemberIds.split(','));
  15.  
  16. Map<Id,Team_Member_Projects__c> oldRecordMap
  17. = new Map<Id,Team_Member_Projects__c>(
  18. [select Team_Member__c, Opportunity__c, Assigned__c, Id
  19. from Team_Member_Projects__c
  20. where Team_Member__c in :tmIds
  21. and Assignment_End_Date__c = null]);
  22.  
  23. //ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, string.valueof(oldRecordMap)));
  24. //return;
  25.  
  26. Map<string,decimal> totalAssignmentsMap = new Map<string,decimal>();
  27. Set<string> existingAssignments = new Set<string>();
  28.  
  29. if(oldRecordMap != null)
  30. {
  31. for(Team_Member_Projects__c tmp : oldRecordMap.values())
  32. {
  33. string tmId = tmp.Team_Member__c;
  34. if(totalAssignmentsMap.get(tmId) == null)
  35. totalAssignmentsMap.put(tmId, 0);
  36.  
  37. decimal totalAssignment = totalAssignmentsMap.get(tmId);
  38. totalAssignment += tmp.Assigned__c;
  39. totalAssignmentsMap.put(tmId, totalAssignment);
  40.  
  41. existingAssignments.add(tmId+tmp.Opportunity__c);
  42. }
  43. }
  44.  
  45. for(string tmId : tmIds)
  46. {
  47. List<Team_Member_Projects__c> tmAssignedProjects = new List<Team_Member_Projects__c>();
  48. if(TmpMap.get(tmId) != null)
  49. tmAssignedProjects = TmpMap.get(tmId);
  50.  
  51. decimal totalAssignment = 0;
  52.  
  53. if(totalAssignmentsMap.containsKey(tmId))
  54. totalAssignment = totalAssignmentsMap.get(tmId);
  55.  
  56. for(Team_Member_Projects__c tmpObj : tmAssignedProjects)
  57. {
  58. boolean wrongAssignmentValue = false;
  59.  
  60. if(tmpObj.Id != null)
  61. {
  62. Team_Member_Projects__c oldTmpObj = oldRecordMap.get(tmpObj.Id);
  63.  
  64. boolean projectWasChanged = tmpObj.Opportunity__c != oldTmpObj.Opportunity__c;
  65.  
  66. ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, string.valueof(tmpObj)));
  67. return;
  68.  
  69. if(projectWasChanged)
  70. {
  71. if(existingAssignments.contains(tmId+tmpObj.Opportunity__c))
  72. {
  73. errorSavingAssignmentsMessage = 'Save Failed. Team member can only be assigned once to each the project.';
  74. projectWasChanged = false;
  75. }
  76. else
  77. {
  78. Team_Member_Projects__c newAssignment = new Team_Member_Projects__c();
  79. newAssignment.Assigned__c = tmpObj.Assigned__c;
  80. newAssignment.Opportunity__c = tmpObj.Opportunity__c;
  81. newAssignment.Team_Member__c = tmId;
  82. tmpList.add(newAssignment);
  83. }
  84. }
  85. else if(tmpObj.Assigned__c == 0
  86. || tmpObj.Assigned__c == null
  87. ||tmpObj.Opportunity__c == null
  88. || projectWasChanged)
  89. {
  90.  
  91. tmpObj = oldTmpObj;
  92. tmpObj.Assignment_End_Date__c = system.now();
  93. }
  94.  
  95. if(tmpObj.Assigned__c != null)
  96. {
  97. if(oldTmpObj.Assigned__c != tmpObj.Assigned__c)
  98. {
  99. if(tmpObj.Assigned__c < 0 || tmpObj.Assigned__c > 100)
  100. {
  101. wrongAssignmentValue = true;
  102. }
  103. else
  104. {
  105. totalAssignment -= oldTmpObj.Assigned__c;
  106. totalAssignment += tmpObj.Assigned__c;
  107. }
  108. }
  109. }
  110. }
  111. else
  112. { if(tmpObj.Assigned__c == null)
  113. {
  114. tmpObj.Assigned__c = 0;
  115. if(tmpObj.Opportunity__c != null)
  116. totalAssignment += tmpObj.Assigned__c;
  117. }
  118. else if(tmpObj.Assigned__c <= 0
  119. || tmpObj.Assigned__c > 100)
  120. {
  121. if(tmpObj.Opportunity__c != null)
  122. wrongAssignmentValue = true;
  123. }
  124. else
  125. {
  126. if(tmpObj.Opportunity__c == null)
  127. errorSavingAssignmentsMessage = 'Save Failed. Please assign a project to the team member.';
  128. else
  129. totalAssignment += tmpObj.Assigned__c;
  130. }
  131. }
  132.  
  133. //change
  134. //ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, string.valueof(tmpObj)));
  135. //return;
  136.  
  137. if(wrongAssignmentValue)
  138. errorSavingAssignmentsMessage = 'Save Failed. Team members' assignments should be between 1% and 100%.';
  139.  
  140. if(totalAssignment > 100)
  141. errorSavingAssignmentsMessage = 'Save Failed. Team members' assignments should not exceed 100%.';
  142.  
  143. if(errorSavingAssignmentsMessage != '')
  144. break;
  145.  
  146. if(tmpObj.Assigned__c == null)
  147. tmpObj.Assigned__c = 0;
  148.  
  149. ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, string.valueof(tmpObj)));
  150. return;
  151.  
  152. if(tmpObj.Assigned__c != null && tmpObj.Opportunity__c != null)
  153. tmpList.add(tmpObj);
  154. }
  155. }
  156.  
  157. }
  158.  
  159.  
  160. if(errorSavingAssignmentsMessage != '')
  161. {
  162. ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, errorSavingAssignmentsMessage));
  163. return;
  164. }
  165.  
  166. upsert tmpList;
  167. update teamMemberList;
  168. }
  169. catch(Exception ex)
  170. {
  171. ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, ex.getMessage()));
  172. if(ex.getMessage().contains('entity is deleted'))
  173. ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'There was a problem updating the changes. One of the opportunities being modified has already been deleted.'));
  174. }
  175. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement