Built files from Bizgaze WebServer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

attendancerequest.js 26KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. var Bizgaze;
  2. (function (Bizgaze) {
  3. let Apps;
  4. (function (Apps) {
  5. let Hrms;
  6. (function (Hrms) {
  7. let Components;
  8. (function (Components) {
  9. class AttendanceRequest extends Unibase.Platform.Core.BaseComponent {
  10. init(formpropertyid, prop, callback) {
  11. }
  12. loadControl(containerid, prop) {
  13. let html = '';
  14. html = `<div class="card attendace_card_view d-none"><div class="card-header d-sm-block d-none"><div class="row text-dark"><div class="col-11"><div class="row"><div class="col-sm-2"></div><div class="col-sm-5"><div class="row"><div class="col-6">Check-in <span class="text-dark">*</span></div><div class="col-6">Check-out <span class="text-dark">*</span></div></div></div><div class="col-sm-2">Total Hours</div><div class="col-sm-3">Description</div></div></div><div class="col-1"></div></div></div><div class="card-body"><ul class="attendance_list"></ul><input type="hidden" id = "hdn_AttendanceRequestControl" class="value-control" value = "Bizgaze.Apps.Hrms.Components.AttendanceRequest.Instance().Attendancerequestobj();" ></div></div>`;
  15. $('#' + containerid).html(html);
  16. }
  17. loadControlSettings(controlsettingjson, formpropertyid) {
  18. return null;
  19. }
  20. loadPropertySettings(propertysettings, formpropertyid, DocPropertyName) {
  21. return null;
  22. }
  23. bindEditFormDetails(formpropertyid, propval, DocPropertyName) {
  24. var id = propval;
  25. let html = `<div class="row text-dark"><div class="col-sm-2"></div><div class="col-sm-5"><div class="row"><div class="col-6">Check-in <span class="text-dark">*</span></div><div class="col-6">Check-out <span class="text-dark">*</span></div></div></div><div class="col-sm-2">Total Hours</div><div class="col-sm-3">Description</div></div>;`;
  26. return html;
  27. }
  28. getEmployeeCheckinAndCheckout(employeeid, fromdate, todate) {
  29. debugger;
  30. var fdate = moment(fromdate.replaceAll("/", "-"), "DD-MM-YYYY").format("YYYY-MM-DD");
  31. var tdate = moment(todate.replaceAll("/", "-"), "DD-MM-YYYY").format("YYYY-MM-DD");
  32. if (tdate < fdate) {
  33. MessageHelper.Instance().showError("Todate cannot be lesser than Fromdate", 'div_ErrorMessage_' + $('#' + Unibase.Platform.Helpers.NavigationHelper.Instance().getLastContainerId()).find('#hf_FormId').val());
  34. }
  35. let Todatehf = moment(todate, "DD/MM/YYYY").format("YYYY/MM/DD");
  36. let Fromdatehf = moment(fromdate, "DD/MM/YYYY").format("YYYY/MM/DD");
  37. $(".hfdate_fromdate").val(Fromdatehf);
  38. $(".hfdate_todate").val(Todatehf);
  39. $(".attendace_card_view").removeClass("d-none");
  40. if ($("#div_FormName").text() == "Create Regularization") {
  41. this.fileCacheHelper.loadJsFile("apps/hrms/managers/attendencemanager.js", function () {
  42. Bizgaze.Apps.Hrms.Managers.AttendenceManager.Instance().getEmployeeCheckinAndCheckout(employeeid, fdate, tdate).then(function (response) {
  43. $('.attendance_list').html('');
  44. const datestotal = [];
  45. function getDates(startDate, endDate) {
  46. const dates = [];
  47. let currentDate = startDate;
  48. const addDays = function (days) {
  49. const date = new Date(this.valueOf());
  50. date.setDate(date.getDate() + days);
  51. return date;
  52. };
  53. while (currentDate <= endDate) {
  54. dates.push(currentDate);
  55. currentDate = addDays.call(currentDate, 1);
  56. }
  57. return dates;
  58. }
  59. let totaldates, html_content = '';
  60. const dates = getDates(new Date(fdate), new Date(tdate));
  61. dates.forEach(function (date) {
  62. datestotal.push(date);
  63. });
  64. totaldates = datestotal;
  65. for (let j = 0; j < totaldates.length; j++) {
  66. let selecteddates = totaldates[j];
  67. let datesbetween = moment(selecteddates).format("YYYY-MM-DD");
  68. let displaydate = moment(selecteddates).format('llll');
  69. displaydate = displaydate.substring(0, 17);
  70. html_content = `<li class="row align-items-center text-dark py-2 border-bottom datesbetween" id='` + datesbetween + `'>
  71. <div class="col-sm-11 col-11"><div class="row">
  72. <div class="col-sm-2 text-left px-1">
  73. <div class="date font-weight-500">` + displaydate + `</div>
  74. </div> <div class="row"> <div class="col-3 hf_date">
  75. <input type ="hidden" class="hf_date" id = "hf_date" value=` + datesbetween + `></div></div>
  76. <div class="row"> <div class="col-3 hf_attendanceid">
  77. <input type ="hidden" class="hf_attendanceid" id = "hf_attendanceid" value="0"></div></div>
  78. <div class="row"> <div class="col-3 hf_regularizationapprovalid">
  79. <input type ="hidden" class="hf_regularizationapprovalid" id = "hf_regularizationapprovalid" value="0"></div></div>
  80. <div class="col-sm-5">
  81. <div class="row">
  82. <div class="col-6 check_in"><input type="time" id="Check_in" class="Check_in_btn form-control datepicker-input hasDatepicker floating-label-control date_startdate hello" ></div>
  83. <div class="col-6 check_out"><input type="time" id="Check_out" class="Check_out_btn form-control type-control datepicker-input hasDatepicker floating-label-control date_startdate" ></div>
  84. </div>
  85. </div>
  86. <div class="col-sm-2 totaltime">00:00</div>
  87. <div class="col-sm-3 txt_Description">
  88. <input type ="text" class="form-control floating-label-control txt_Description" id="txt_Description" data-isdynamic="false" placeholder="Enter Description" data-placeholder="Description" data-label="Description" >
  89. </div>
  90. </div>
  91. </div>
  92. <div class="col-1 col-sm-1 text-right">
  93. <input type="checkbox" id="txt_checkbox" class="floating-label-control txt_checkbox hidden"></div>
  94. </li>`;
  95. $('.attendance_list').append(html_content);
  96. }
  97. if (response.result.length > 0) {
  98. for (var i = 0; i < response.result.length; i++) {
  99. var data = response.result[i];
  100. let attendanceid = data.AttendanceId, date = data, checkindate = Unibase.Platform.Helpers.DateTimeHelper.instance.formatLocalDateTime(data.CheckIn), checkindate_format = moment(data.Date).format("YYYY-MM-DD"), checkoutdate = Unibase.Platform.Helpers.DateTimeHelper.instance.formatLocalDateTime(data.CheckOut), totaltime = data.TotalMinutes, description = data.Description;
  101. let attendeddate = checkindate.substring(0, 10);
  102. if (checkindate.length != 0) {
  103. let ckeckintime = checkindate.substring(11, 16);
  104. let checkindates = moment(ckeckintime, 'HHmm').format("HH:mm");
  105. $("#" + checkindate_format).find(".check_in").html(`<input type="time" id="Check_in" class="Check_in_btn form-control datepicker-input hasDatepicker" value=` + checkindates + ` >`);
  106. }
  107. if (checkoutdate > checkindate) {
  108. if (checkoutdate.length != 0) {
  109. let ckeckouttime = checkoutdate.substring(11, 16);
  110. let checkoutdates = moment(ckeckouttime, 'HHmm').format("HH:mm");
  111. $("#" + checkindate_format).find(".check_out").html(`<input type="time" id="Check_out" class="Check_out_btn form-control datepicker-input hasDatepicker " value=` + checkoutdates + ` >`);
  112. }
  113. }
  114. if (description != null && description != "") {
  115. $("#" + checkindate_format).find(".txt_Description").html(`<input type="text" id="txt_Description" class="form-control" value=` + description + ` >`);
  116. }
  117. if (totaltime != 0) {
  118. var m = totaltime % 60;
  119. var h = (totaltime - m) / 60;
  120. var HHMM = (h < 10 ? "0" : "") + h.toString() + ":" + (m < 10 ? "0" : "") + m.toString();
  121. $("#" + checkindate_format).find(".totaltime").html(HHMM);
  122. }
  123. if (attendanceid != 0) {
  124. $("#" + checkindate_format).find(".hf_attendanceid").html(`<input type ="hidden" id="hf_attendanceid" class="form-control" value=` + attendanceid + ` >`);
  125. }
  126. }
  127. }
  128. $(".Check_out_btn,.Check_in_btn").change(function () {
  129. debugger;
  130. var checkin = $(this).parents(".datesbetween").find("#Check_in").val();
  131. var checkout = $(this).parents(".datesbetween").find("#Check_out").val();
  132. var start = new Date("01/01/2007 " + checkin).getTime();
  133. var end = new Date("01/01/2007 " + checkout).getTime();
  134. let difference = Math.abs(end - start);
  135. difference = difference / 1000;
  136. let hourDifference = Math.floor(difference / 3600);
  137. difference -= hourDifference * 3600;
  138. let minuteDifference = Math.floor(difference / 60);
  139. difference -= minuteDifference * 60;
  140. var value = (hourDifference < 10 ? "0" : "") + hourDifference.toString() + ":" + (minuteDifference < 10 ? "0" : "") + minuteDifference.toString();
  141. $(this).parents(".datesbetween").find(".totaltime").html(value);
  142. });
  143. });
  144. });
  145. }
  146. else {
  147. this.fileCacheHelper.loadJsFile("apps/hrms/managers/attendencemanager.js", function () {
  148. Bizgaze.Apps.Hrms.Managers.AttendenceManager.Instance().getRegularizationCheckinAndCheckout(employeeid, fdate, tdate).then(function (response) {
  149. $('.attendance_list').html('');
  150. const datestotal = [];
  151. function getDates(startDate, endDate) {
  152. const dates = [];
  153. let currentDate = startDate;
  154. const addDays = function (days) {
  155. const date = new Date(this.valueOf());
  156. date.setDate(date.getDate() + days);
  157. return date;
  158. };
  159. while (currentDate <= endDate) {
  160. dates.push(currentDate);
  161. currentDate = addDays.call(currentDate, 1);
  162. }
  163. return dates;
  164. }
  165. let totaldates, html_content = '';
  166. const dates = getDates(new Date(fdate), new Date(tdate));
  167. dates.forEach(function (date) {
  168. datestotal.push(date);
  169. });
  170. totaldates = datestotal;
  171. for (let j = 0; j < totaldates.length; j++) {
  172. let selecteddates = totaldates[j];
  173. let datesbetween = moment(selecteddates).format("YYYY-MM-DD");
  174. let displaydate = moment(selecteddates).format('llll');
  175. displaydate = displaydate.substring(0, 17);
  176. html_content = `<li class="row align-items-center text-dark py-2 border-bottom datesbetween" id='` + datesbetween + `'>
  177. <div class="col-sm-11 col-11"><div class="row">
  178. <div class="col-sm-2 text-left px-1">
  179. <div class="date font-weight-500">` + displaydate + `</div>
  180. </div> <div class="row"> <div class="col-3 hf_date">
  181. <input type ="hidden" class="hf_date" id = "hf_date" value=` + datesbetween + `></div></div>
  182. <div class="row"> <div class="col-3 hf_attendanceid">
  183. <input type ="hidden" class="hf_attendanceid" id = "hf_attendanceid" value="0"></div></div>
  184. <div class="row"> <div class="col-3 hf_regularizationapprovalid">
  185. <input type ="hidden" class="hf_regularizationapprovalid" id = "hf_regularizationapprovalid" value="0"></div></div>
  186. <div class="col-sm-5">
  187. <div class="row">
  188. <div class="col-6 check_in"><input type="time" id="Check_in" class="Check_in_btn form-control datepicker-input hasDatepicker floating-label-control date_startdate hello" ></div>
  189. <div class="col-6 check_out"><input type="time" id="Check_out" class="Check_out_btn form-control type-control datepicker-input hasDatepicker floating-label-control date_startdate" ></div>
  190. </div>
  191. </div>
  192. <div class="col-sm-2 totaltime">00:00</div>
  193. <div class="col-sm-3 txt_Description">
  194. <input type ="text" class="form-control floating-label-control txt_Description" id="txt_Description" data-isdynamic="false" placeholder="Enter Description" data-placeholder="Description" data-label="Description" >
  195. </div>
  196. </div>
  197. </div>
  198. <div class="col-1 col-sm-1 text-right">
  199. <input type="checkbox" id="txt_checkbox" class="floating-label-control txt_checkbox hidden"></div>
  200. </li>`;
  201. $('.attendance_list').append(html_content);
  202. }
  203. if (response.result.length > 0) {
  204. debugger;
  205. for (var i = 0; i < response.result.length; i++) {
  206. var data = response.result[i];
  207. let attendanceid = data.attendanceid, regularizationapprovalid = data.regularizationapprovalid, date = data, checkindate = Unibase.Platform.Helpers.DateTimeHelper.instance.formatLocalDateTime(data.checkin), checkindate_format = moment(data.date).format("YYYY-MM-DD"), checkoutdate = Unibase.Platform.Helpers.DateTimeHelper.instance.formatLocalDateTime(data.checkout), totaltime = data.totalminutes, description = data.description;
  208. let attendeddate = checkindate.substring(0, 10);
  209. if (checkindate.length != 0) {
  210. let ckeckintime = checkindate.substring(11, 16);
  211. let checkindates = moment(ckeckintime, 'HHmm').format("HH:mm");
  212. $("#" + checkindate_format).find(".check_in").html(`<input type="time" id="Check_in" class="Check_in_btn form-control datepicker-input hasDatepicker" value=` + checkindates + ` >`);
  213. }
  214. if (checkoutdate.length != 0) {
  215. let ckeckouttime = checkoutdate.substring(11, 16);
  216. let checkoutdates = moment(ckeckouttime, 'HHmm').format("HH:mm");
  217. $("#" + checkindate_format).find(".check_out").html(`<input type="time" id="Check_out" class="Check_out_btn form-control datepicker-input hasDatepicker " value=` + checkoutdates + ` >`);
  218. }
  219. if (description != null && description != "") {
  220. $("#" + checkindate_format).find(".txt_Description").html(`<input type="text" id="txt_Description" class="form-control" value=` + description + ` >`);
  221. }
  222. if (totaltime != 0) {
  223. var m = totaltime % 60;
  224. var h = (totaltime - m) / 60;
  225. var HHMM = (h < 10 ? "0" : "") + h.toString() + ":" + (m < 10 ? "0" : "") + m.toString();
  226. $("#" + checkindate_format).find(".totaltime").html(HHMM);
  227. }
  228. if (attendanceid != 0) {
  229. $("#" + checkindate_format).find(".hf_attendanceid").html(`<input type ="hidden" id="hf_attendanceid" class="form-control" value=` + attendanceid + ` >`);
  230. }
  231. if (regularizationapprovalid != 0) {
  232. $("#" + checkindate_format).find(".hf_regularizationapprovalid").html(`<input type ="hidden" id="hf_regularizationapprovalid" class="form-control" value=` + regularizationapprovalid + ` >`);
  233. }
  234. }
  235. }
  236. $(".Check_out_btn ,.Check_in_btn").change(function () {
  237. debugger;
  238. var checkin = $(this).parents(".datesbetween").find("#Check_in").val();
  239. var checkout = $(this).parents(".datesbetween").find("#Check_out").val();
  240. var start = new Date("01/01/2007 " + checkin).getTime();
  241. var end = new Date("01/01/2007 " + checkout).getTime();
  242. let difference = Math.abs(end - start);
  243. difference = difference / 1000;
  244. let hourDifference = Math.floor(difference / 3600);
  245. difference -= hourDifference * 3600;
  246. let minuteDifference = Math.floor(difference / 60);
  247. difference -= minuteDifference * 60;
  248. var value = (hourDifference < 10 ? "0" : "") + hourDifference.toString() + ":" + (minuteDifference < 10 ? "0" : "") + minuteDifference.toString();
  249. $(this).parents(".datesbetween").find(".totaltime").html(value);
  250. });
  251. if ($("#div_FormName").text() == "Regularization_ApprovedForm") {
  252. $(".txt_checkbox").removeClass("hidden");
  253. $(".Check_out_btn").attr("disabled", "disabled");
  254. $(".Check_in_btn").attr("disabled", "disabled");
  255. $(".dropdown_periodtypeid").attr("disabled", "disabled");
  256. $(".txtAutoComplete_employeeid").attr("disabled", "disabled");
  257. $(".date_fromdate").attr("disabled", "disabled");
  258. $(".date_todate").attr("disabled", "disabled");
  259. $(".calender_fromdate").addClass("hidden");
  260. $(".calender_todate").addClass("hidden");
  261. }
  262. });
  263. });
  264. }
  265. }
  266. Attendancerequestobj() {
  267. debugger;
  268. var attendanceRequest = new Array();
  269. $('.datesbetween').each(function (index) {
  270. var element = $(this);
  271. var date_nontz = element.find("#hf_date").val();
  272. var date_withtz = new Date(date_nontz.toString());
  273. var isApproved = $(this).find('.txt_checkbox').is(':checked');
  274. attendanceRequest.push({
  275. Date: date_withtz,
  276. Description: element.find('#txt_Description').val(),
  277. CheckIn: element.find('#Check_in').val(),
  278. CheckOut: element.find('#Check_out').val(),
  279. AttendanceId: Number(element.find('#hf_attendanceid').val()),
  280. RegularizationapprovalId: Number(element.find('#hf_regularizationapprovalid').val()),
  281. IsApproved: isApproved,
  282. });
  283. });
  284. return attendanceRequest;
  285. }
  286. regularizationapprove() {
  287. let detailContainer = $("._bizgaze_detail_container:visible");
  288. let refstatusId = (Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.filter(function (o) {
  289. return o.Key === "hf_" + Unibase.Themes.Providers.DetailHelper.installedAppId + "_refstatusid";
  290. })[0].Value);
  291. $(detailContainer).find('.DetailSetting_' + Unibase.Themes.Providers.DetailHelper.installedAppId + '_Approve').addClass('hidden');
  292. if (refstatusId != '3' && refstatusId != '5') {
  293. $(detailContainer).find('.DetailSetting_' + Unibase.Themes.Providers.DetailHelper.installedAppId + '_Approve').removeClass('hidden');
  294. }
  295. }
  296. static Instance() {
  297. if (this.instance === undefined) {
  298. this.instance = new AttendanceRequest();
  299. }
  300. return this.instance;
  301. }
  302. }
  303. Components.AttendanceRequest = AttendanceRequest;
  304. })(Components = Hrms.Components || (Hrms.Components = {}));
  305. })(Hrms = Apps.Hrms || (Apps.Hrms = {}));
  306. })(Apps = Bizgaze.Apps || (Bizgaze.Apps = {}));
  307. })(Bizgaze || (Bizgaze = {}));