Built files from Bizgaze WebServer
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

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 = {}));