// ==UserScript==
// @name User Setup Loop
// @namespace localhost
// @version 0.1.3
// @description This script is a companion script to run with the "Installz Script"
// @author [email protected]
// @include *autoloop.us*
// @grant none
// @icon
// ==/UserScript==
'use strict';
/*ItemList
[#] Item
0 Advisor Accept Appt Every
1 Walkins Consume Capacity
2 Use Advisor from Last RO
3 Default Dealer Make
4 Sales Phone
5 Service Phone
6 parsedSettingsString
7 Sales Contact - Email
8 Sales Contact - Title
9 Service Contact - Name
10 Service Contact - Email
11 Service Contact - Title
12 Area Code
13 Appointment Confirmation - Voice
14 Appointment Confirmation - SMS
15 Appointment Confirmation - Email
16 Appointment Confirmation - BDC
17 Parts Department Link
18 Service Department Link
19 New Vehicles Link
20 Used Vehicles Link
21 Sales Specials Link
22 Service Monday Open
23 Service Monday Close
24 Service Tuesday Open
25 Service Tuesday Close
26 Service Wednesday Open
27 Service Wednesday Close
28 Service Thursday Open
29 Service Thursday Close
30 Service Friday Open
31 Service Friday Close
32 Service Saturday Open
33 Service Saturday Close
34 Service Sunday Open
35 Service Sunday Close
36 Sales Monday Open
37 Sales Monday Close
38 Sales Tuesday Open
39 Sales Tuesday Close
40 Sales Wednesday Open
41 Sales Wednesday Close
42 Sales Thursday Open
43 Sales Thursday Close
44 Sales Friday Open
45 Sales Friday Close
46 Sales Saturday Open
47 Sales Saturday Close
48 Sales Sunday Open
49 Sales Sunday Close
50 Missed Appointment - Voice
51 Missed Appointment - SMS
52 Missed Appointment - Email
53 Missed Appointment - BDC
54 Customer Recovery - Voice
55 Customer Recovery - SMS
56 Customer Recovery - Email
57 Customer Recovery - BDC
58 Declined Repairs - Voice
59 Declined Repairs - SMS
60 Declined Repairs - Email
61 Declined Repairs - BDC
62 Parts Arrival - Voice
63 Parts Arrival - SMS
64 Parts Arrival - Email
65 Parts Arrival - BDC
66 Scheduled Maint - Voice
67 Scheduled Maint - SMS
68 Scheduled Maint - Email
69 Scheduled Maint - BDC
70 Service Completion - Voice
71 Service Completion - SMS
72 Service Completion - Email
73 Service Completion - BDC
74 Service FollowUp - Voice
75 Service FollowUp - SMS
76 Service FollowUp - Email
77 Service FollowUp - BDC
78 Service Intro - Voice
79 Service Intro - SMS
80 Service Intro - Email
81 Service Intro - BDC
82 State Inspection Reminder - Voice
83 State Inspection Reminder - SMS
84 State Inspection Reminder - Email
85 State Inspection Reminder - BDC
86 Tires Due - Voice
87 Tires Due - SMS
88 Tires Due - Email
89 Tires Due - BDC
90 Vehicle Accessories - Voice
91 Vehicle Accessories - SMS
92 Vehicle Accessories - Email
93 Vehicle Accessories - BDC
94 Customer Birthday - Voice
95 Customer Birthday - SMS
96 Customer Birthday - Email
97 Customer Birthday - BDC
98 Ext. Service Contract - Voice
99 Ext. Service Contract - SMS
100 Ext. Service Contract - Email
101 Ext. Service Contract - BDC
102 Lease Expiration - Voice
103 Lease Expiration - SMS
104 Lease Expiration - Email
105 Lease Expiration - BDC
106 Sales FollowUp - Voice
107 Sales FollowUp - SMS
108 Sales FollowUp - Email
109 Sales FollowUp - BDC
110 Service Contract FollowUp - Voice
111 Service Contract FollowUp - SMS
112 Service Contract FollowUp - Email
113 Service Contract FollowUp - BDC
114 Service to Sales - Voice
115 Service to Sales - SMS
116 Service to Sales - Email
117 Service to Sales - BDC
118 Trade Cycle - Voice
119 Trade Cycle - SMS
120 Trade Cycle - Email
121 Trade Cycle - BDC
122 Vehicle Anniversary - Voice
123 Vehicle Anniversary - SMS
124 Vehicle Anniversary - Email
125 Vehicle Anniversary - BDC
126 Facebook Link
127 Twitter Link
128 Youtube Link
129 Instagram Link
130 Schedule Appt Link
131 Sales Signatory - Name
132 Sales Signatory - Title
133 Sales Signatory - Phone
134 Sales Signatory - Email
135 Service Signatory - Name
136 Service Signatory - Title
137 Service Signatory - Phone
138 Service Signatory - Email
139 Tire URL
140 Notifications - Voice
141 Notifications - SMS
142 Notifications - Email
143 Show Pricing in OCAS
144 Sales User 1
145 Sales User 2
146 Sales User 3
147 Sales User 4
148 Sales User 5
149 Sales User 6
150 Sales User 7
151 Sales User 8
152 Sales User 9
153 Sales User 10
154 Service User 1
155 Service User 2
156 Service User 3
157 Service User 4
158 Service User 5
159 Service User 6
160 Service User 7
161 Service User 8
162 Service User 9
163 Service User 10
164 Website URL
165 Sales Print Friendly Hours 1
166 Sales Print Friendly Hours 2
167 Sales Print Friendly Hours 3
168 Service Print Friendly Hours 1
169 Service Print Friendly Hours 2
170 Service Print Friendly Hours 3
171 Sales Follow Up Survey
172 Service Follow Up Survey
173 Msging name
174 Sales User 11
175 Sales User 12
176 Sales User 13
177 Sales User 14
178 Sales User 15
179 Sales User 16
180 Sales User 17
181 Sales User 18
182 Service User 11
183 Service User 12
184 Service User 13
185 Service User 14
186 Service User 15
187 Service User 16
188 Service User 17
189 Service User 18
*/
//user management home page
if ((window.location.href == ('https://autoloop.us/DMS/App/DealershipSettings/UserManagement.aspx')) || (window.location.href == ('https://autoloop.us/DMS/App/DealershipSettings/UserManagement.aspx#!'))) {
var userLoopStatus = localStorage.getItem("userLoopStatus");
if (userLoopStatus == "y") {
$("[data-tip='Add New User']").click(); //click "add new user"
} else if (userLoopStatus == "n") {
var errorCount = localStorage.getItem("errorCount");
var errorMsg = localStorage.getItem("errorMsg");
alert("User Setup Complete \n\nNOTE: Remember to disable the User Loop!");
if (errorCount.length >= 1) {
alert(errorMsg);
}
}
function UserManagementHomePage() {
$("pre").append("<button id='startUserLoopBtn' type='button'><font color='black'>Start User Setup Loop</font></button>"); //("<br>User Loop Enabled? <input type= 'checkbox' id= 'enableUserLoop' value= 'enableUserLoop'>");
$("#startUserLoopBtn").click(function(){
var userDataGraveyard = "";
var pageWaitStatus = "n";
var completeUserStatus = "n";
var userLoopStatus = "y";
var userSlotGraveyard = "";
var errorCount;
var errorMsg = "Some Users Could Not Be Added Due to Errors: \n";
localStorage.setItem("userDataGraveyard", userDataGraveyard);
localStorage.setItem("userLoopStatus", userLoopStatus);
localStorage.setItem("pageWaitStatus", pageWaitStatus);
localStorage.setItem("completeUserStatus", completeUserStatus);
localStorage.setItem("userSlotGraveyard", userSlotGraveyard);
localStorage.setItem("errorCount", errorCount);
localStorage.setItem("errorMsg", errorMsg);
$("[data-tip='Add New User']").click();
});
}
UserManagementHomePage();
}
//add new user page
if (window.location.href == ('https://autoloop.us/DMS/App/DealershipSettings/EditUser.aspx')) {
var completeUserStatus = localStorage.getItem("completeUserStatus");
userLoopStatus = "n";
localStorage.setItem("userLoopStatus", userLoopStatus);
//if user already exists
if ($(".notificationError .messageContents").text().includes("There was a problem with your submission.That Username already exists in the system. Either choose a different Username or add this User from the Add Existing User screen.Show Errors")) {
var existingUserEmail = $("[name='ctl00\$ctl00\$Main\$Main\$tfEmailAddress\$textBox']").val();
userLoopStatus = "y";
localStorage.setItem("userLoopStatus", userLoopStatus);
localStorage.setItem("existingUserEmail", existingUserEmail);
window.location.href = "https://autoloop.us/DMS/App/DealershipSettings/AddExistingUser.aspx";
} else if (($(".notificationError .messageContents").text().includes("'Email Address' contains an invalid email address.")) || ($(".notificationError .messageContents").text().includes("'First Name' is a required field.")) || ($(".notificationError .messageContents").text().includes("'Last Name' is a required field."))) {
errorCount = localStorage.getItem("errorCount");
errorMsg = localStorage.getItem("errorMsg");
userLoopStatus = localStorage.getItem("userLoopStatus");;
errorCount += "i"; //instead of errorCount++, i am adding one character per time and will count the length of the string
errorMsg += "\n" + $("[onkeypress] tr:nth-of-type(1) .invalidField").val();
userLoopStatus = "y";
localStorage.setItem("errorCount", errorCount);
localStorage.setItem("errorMsg", errorMsg);
localStorage.setItem("userLoopStatus", userLoopStatus);
window.location.href = "https://autoloop.us/DMS/App/DealershipSettings/UserManagement.aspx";
} else {
if (completeUserStatus == "n") {
function UserSetup() {
var settingsString = localStorage.getItem("settingsKeyStorage"); //get stored settings key from user management home page
var parsedSettingsString = settingsString.split('~'); //settings key parsed, using '~' as delimiter
var userDataGraveyard = localStorage.getItem("userDataGraveyard"); //get stored settings key from user management home page
var userSlotGraveyard = localStorage.getItem("userSlotGraveyard"); //store "n" so that this code only runs when it is supposed to
var UserItemNumbers = {
"salesUser1" : parsedSettingsString[144],
"salesUser2" : parsedSettingsString[145],
"salesUser3" : parsedSettingsString[146],
"salesUser4" : parsedSettingsString[147],
"salesUser5" : parsedSettingsString[148],
"salesUser6" : parsedSettingsString[149],
"salesUser7" : parsedSettingsString[150],
"salesUser8" : parsedSettingsString[151],
"salesUser9" : parsedSettingsString[152],
"salesUser10" : parsedSettingsString[153],
"salesUser11" : parsedSettingsString[174],
"salesUser12" : parsedSettingsString[175],
"salesUser13" : parsedSettingsString[176],
"salesUser14" : parsedSettingsString[177],
"salesUser15" : parsedSettingsString[178],
"salesUser16" : parsedSettingsString[179],
"salesUser17" : parsedSettingsString[180],
"salesUser18" : parsedSettingsString[181],
"serviceUser1" : parsedSettingsString[154],
"serviceUser2" : parsedSettingsString[155],
"serviceUser3" : parsedSettingsString[156],
"serviceUser4" : parsedSettingsString[157],
"serviceUser5" : parsedSettingsString[158],
"serviceUser6" : parsedSettingsString[159],
"serviceUser7" : parsedSettingsString[160],
"serviceUser8" : parsedSettingsString[161],
"serviceUser9" : parsedSettingsString[162],
"serviceUser10" : parsedSettingsString[163],
"serviceUser11" : parsedSettingsString[182],
"serviceUser12" : parsedSettingsString[183],
"serviceUser13" : parsedSettingsString[184],
"serviceUser14" : parsedSettingsString[185],
"serviceUser15" : parsedSettingsString[186],
"serviceUser16" : parsedSettingsString[187],
"serviceUser17" : parsedSettingsString[188],
"serviceUser18" : parsedSettingsString[189],
}
for (var user in UserItemNumbers) {
var currentUser = UserItemNumbers[user];
var userDataGraveyardArray = userDataGraveyard.split(">");
var findUserStatus = "n";
var matchCounter = 0;
var userLoopStatus = localStorage.getItem("userLoopStatus");
if (userSlotGraveyard.includes(user) == true) {
//do nothing
} else {
for (var i = 0; i < userDataGraveyardArray.length; i++) {
if ((userDataGraveyardArray[i] == currentUser) && (currentUser !== "**")) { //(userDataGraveyardArray[i] !== currentUser) {
matchCounter++;
}
}
if (currentUser == "**") { //if the user slot is empty
userSlotGraveyard += "~" + user;
localStorage.setItem("userSlotGraveyard", userSlotGraveyard);
} else if (matchCounter <= 0) { //if the user is not empty or a repeat
userSlotGraveyard += "~" + user;
localStorage.setItem("userSlotGraveyard", userSlotGraveyard);
doo();
break;
} else if (matchCounter >= 1) { //if
userSlotGraveyard += "~" + user;
localStorage.setItem("userSlotGraveyard", userSlotGraveyard);
}
}
if (userSlotGraveyard.split("~").length >= 37) {
userLoopStatus = "n";
localStorage.setItem("userLoopStatus", userLoopStatus);
window.location.href = "https://autoloop.us/DMS/App/DealershipSettings/UserManagement.aspx";
}
}
function doo() {
findUserStatus = "y";
var userDataGraveyardPlus = userDataGraveyard + ">" + currentUser;
completeUserStatus = "y";
userLoopStatus = "y";
localStorage.setItem("userLoopStatus", userLoopStatus);
localStorage.setItem("userDataGraveyard", userDataGraveyardPlus);
localStorage.setItem("completeUserStatus", completeUserStatus);
currentUser = currentUser.split("*");
$("[placeholder]").val(currentUser[0].trim());
$("#executeButton").click();
}
}
UserSetup();
} else if (completeUserStatus == "y") {
completeUserStatus = "n";
localStorage.setItem("completeUserStatus", completeUserStatus);
$("[onkeypress] > div:nth-of-type(4) .GeneratedButtonLink:nth-of-type(1)").click();
}
}
}
//add existing user page
if (window.location.href == ('https://autoloop.us/DMS/App/DealershipSettings/AddExistingUser.aspx')) {
$(window).load(function() {
var existingUserEmail = localStorage.getItem("existingUserEmail");
if ($("#ctl00_ctl00_MasterPageBodyTag > div.barWrapper > div.notificationSuccess.notificationMessage > div > ul > li").text().includes(" to this Company. You can add more users, return to your company's settings screen or Edit ")) {
window.location.href = "https://autoloop.us/DMS/App/DealershipSettings/EditUser.aspx?UserName=" + existingUserEmail;
} else {
$("[name='ctl00\$ctl00\$Main\$Main\$tfUserName\$textBox']").val(existingUserEmail);
$("[onkeypress] div .GeneratedButtonLink:nth-of-type(2)").click();
}
});
}
//edit existing user page
if (window.location.href.includes('https://autoloop.us/DMS/App/DealershipSettings/EditUser.aspx?UserName=')) {
var permissions = localStorage.getItem("permissions");
var permissionsCheck = {
"ServiceAdvisorSettingsBtn" : "Advisor",
"ServiceManagerSettingsBtn" : "Service Manager",
"SalesPersonSettingsBtn" : "Sales Person",
"SalesManagerSettingsBtn" : "Sales Manager",
"TechnicianSettingsBtn" : "Technician",
"BDCRepSettingsBtn" : "BDC Rep",
"BDCManagerSettingsBtn" : "BDC Manager",
}
for (var permission in permissionsCheck) {
if (permissions == permissionsCheck[permission]) {
$("#" + permission).click();
break;
}
}
//inbox email alias
if ($('#ctl00_ctl00_Main_Main_txtInboxAlias').length >= 1) {
function Alias() {
var firstName = $('#ctl00_ctl00_Main_Main_tfFirstName_textBox').val();
var lastName = $('#ctl00_ctl00_Main_Main_tfLastName_textBox').val();
var alias = (firstName.substring(0, 1)) + lastName;
$('#ctl00_ctl00_Main_Main_txtInboxAlias').val(alias);
}
Alias();
}
$("[onkeypress] > div:nth-of-type(4) .GeneratedButtonLink:nth-of-type(1)").click(); //save
}