vehicle-maintenance-add.component.ts 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. import { HttpClient } from '@angular/common/http';
  2. import { NgxSpinnerService } from 'ngx-spinner';
  3. import { ActivatedRoute, Params } from '@angular/router';
  4. import { Location } from '@angular/common';
  5. import { AuthServiceService } from './../../../shared/auth-service.service';
  6. import { ToastrService } from 'ngx-toastr';
  7. import { DashboardService } from './../../../shared/dashboard.service';
  8. import { Component, OnInit, ViewChild } from '@angular/core';
  9. import { NgForm } from '@angular/forms';
  10. @Component({
  11. selector: 'app-vehicle-maintenance-add',
  12. templateUrl: './vehicle-maintenance-add.component.html',
  13. styleUrls: ['./vehicle-maintenance-add.component.css']
  14. })
  15. export class VehicleMaintenanceAddComponent implements OnInit {
  16. constructor(private dashBoardSer: DashboardService,
  17. private toastr: ToastrService,
  18. public authSer: AuthServiceService,
  19. private route: ActivatedRoute,
  20. private spinner: NgxSpinnerService,
  21. private location: Location,
  22. private http: HttpClient
  23. ) { }
  24. @ViewChild('f') vehicleForm : NgForm;
  25. typePage: string = '';
  26. vehicleReceiptDate = '';
  27. vehicleDeliveryDate:string = '';
  28. bindingDateSplitStart;
  29. bindingDateSplitEnd;
  30. checkEdit: boolean = false;
  31. checkSaveclick:boolean = false;
  32. typeMode: boolean = false;
  33. vehicleNumber: number;
  34. vehicleId: number;
  35. count: number;
  36. perPagePagenation: number;
  37. currentPage:number = 1;
  38. dataTableNumber: number = 5;
  39. show : Boolean = false;
  40. licenseNum = [];
  41. vehicle_types:any[] = [];
  42. modelNames:any[] = [];
  43. vehicleDataTable = [];
  44. maintenanceVehicleId: number;
  45. startDate: string = '';
  46. endDate: string = '';
  47. formData = {
  48. vehicle_type_id: '',
  49. vehicle_id: '',
  50. start_date: '',
  51. delivery_date: '',
  52. maintenance_notes: '',
  53. is_maintained: '',
  54. }
  55. ngOnInit() {
  56. //get vehicles types
  57. this.http.get(this.authSer.pathApi + '/get_vehicle_types_list').subscribe(
  58. (response) => {
  59. console.log(response);
  60. this.vehicle_types = response['types'];
  61. },
  62. (error) => {
  63. console.log(error);
  64. });
  65. this.route.params.subscribe(
  66. (params: Params) => {
  67. this.maintenanceVehicleId = params['vehicleMaintenanceEditId'];
  68. }
  69. );
  70. if(this.maintenanceVehicleId) {
  71. this.spinner.show();
  72. this.typePage = 'تعديل';
  73. this.typeMode = true;
  74. this.dashBoardSer.getItemData(this.maintenanceVehicleId, 'maintenanceVehicle').subscribe(
  75. (responce) => {
  76. console.log('FFFFF',responce);
  77. this.formData.vehicle_id = responce['maintenance'].vehicle_id;
  78. this.formData.start_date = responce['maintenance'].start_date;
  79. this.formData.maintenance_notes = responce['maintenance'].maintenance_notes;
  80. this.formData.delivery_date = responce['maintenance'].delivery_date;
  81. this.formData.is_maintained = responce['maintenance'].is_maintained;
  82. this.formData.vehicle_type_id = responce['maintenance'].vehicle_type_id;
  83. this.getLicenseNum(this.formData.vehicle_type_id);
  84. this.formData.vehicle_id = responce['maintenance'].vehicle_id;
  85. this.vehicleNumber = responce['maintenance'].plate_number;
  86. //get table data
  87. this.dashBoardSer.getDataUSerSearchBar(this.vehicleNumber,
  88. 46,
  89. this.currentPage,
  90. this.dataTableNumber).subscribe(
  91. (responce) => {
  92. console.log('search table edit ', responce);
  93. this.vehicleDataTable = responce['vehicle_maintenances'];
  94. this.count = responce['count'];
  95. this.perPagePagenation = responce['per_page'];
  96. },
  97. (error) => {
  98. console.log(error);
  99. }
  100. );
  101. this.startDate = responce['maintenance'].start_date;
  102. this.endDate = responce['maintenance'].delivery_date;
  103. this.checkEdit = true;
  104. this.bindingDateSplitStart = {
  105. year: parseInt(responce['maintenance'].start_date.split('-')[0]),
  106. month: parseInt(responce['maintenance'].start_date.split('-')[1]),
  107. day: parseInt(responce['maintenance'].start_date.split('-')[2]),
  108. }
  109. this.bindingDateSplitEnd = {
  110. year: parseInt(responce['maintenance'].delivery_date.split('-')[0]),
  111. month: parseInt(responce['maintenance'].delivery_date.split('-')[1]),
  112. day: parseInt(responce['maintenance'].delivery_date.split('-')[2]),
  113. }
  114. this.spinner.hide();
  115. },
  116. (error) => {
  117. console.log(error);
  118. }
  119. );
  120. } else {
  121. this.typePage = 'إضافه';
  122. }
  123. }
  124. onChangeVehicleType(event){
  125. this.licenseNum = [];
  126. const typeId = event.target.value;
  127. this.getLicenseNum(typeId)
  128. }
  129. getLicenseNum(typeId){
  130. this.http.get(this.authSer.pathApi + '/get_vehicles_by_type_id/' + typeId ).subscribe(
  131. (response) => {
  132. console.log(response);
  133. this.licenseNum = response['vehicles'];
  134. this.show = true;
  135. },
  136. (error) => {
  137. console.log(error);
  138. }
  139. );
  140. }
  141. //get value date from child component
  142. public getDate(date: any , type: string):void {
  143. if(date.month < 10) {
  144. date.month = '0' + date.month;
  145. }
  146. if(date.day < 10) {
  147. date.day = '0' + date.day;
  148. }
  149. console.log( date);
  150. if(type == 'start') {
  151. this.startDate = date.year + '-' + date.month + '-' + date.day;
  152. console.log('start date', this.startDate);
  153. } else if(type == 'end') {
  154. this.endDate = date.year + '-' + date.month + '-' + date.day;
  155. console.log('end date', this.endDate);
  156. } else {
  157. console.log('not type recieved !');
  158. }
  159. }
  160. //change page
  161. onPageChange(pagenationNumber) {
  162. this.spinner.show();
  163. this.currentPage = pagenationNumber;
  164. this.vehicleDataTable = [];
  165. //console.log(pagenationNumber);
  166. //console.log(this.pageId);
  167. this.dashBoardSer.getListData(46, pagenationNumber, this.dataTableNumber).subscribe(
  168. (responce) => {
  169. console.log('search result ', responce);
  170. this.vehicleDataTable = responce['vehicle_maintenances'];
  171. this.count = responce['count'];
  172. this.perPagePagenation = responce['per_page'];
  173. console.log(this.vehicleDataTable);
  174. this.spinner.hide();
  175. },
  176. (error) => {
  177. console.log(error);
  178. this.spinner.hide();
  179. }
  180. );
  181. };
  182. //determine the list count from select element
  183. onGetValue(event) {
  184. this.spinner.show();
  185. this.vehicleDataTable = [];
  186. this.dataTableNumber = event.target.value;
  187. this.dashBoardSer.getListData(46, this.currentPage, this.dataTableNumber).subscribe(
  188. (responce) => {
  189. console.log(responce);
  190. this.vehicleDataTable = responce['vehicle_maintenances'];
  191. this.count = responce['count'];
  192. this.perPagePagenation = responce['per_page'];
  193. this.spinner.hide();
  194. },
  195. (error) => {
  196. console.log(error);
  197. this.spinner.hide();
  198. }
  199. );
  200. };
  201. onSubmitted() {
  202. this.checkSaveclick = true;
  203. this.vehicleForm.value['start_date'] = this.startDate;
  204. this.vehicleForm.value['delivery_date'] = this.endDate;
  205. delete this.vehicleForm.value['vehicle_type_id'];
  206. console.log(this.formData);
  207. const startDateData = this.startDate.split('-');
  208. const endDateData = this.endDate.split('-');
  209. if(this.typeMode) {
  210. if(startDateData[0] > endDateData[0]) {
  211. this.toastr.warning('سنه تاريخ الإنتهاء يجب أن تكون أكبر من سنه تاريخ الإنتهاء !');
  212. this.checkSaveclick = false;
  213. } else if(startDateData[1] > endDateData[1]) {
  214. this.toastr.warning('شهر تاريخ الانتهاء يجب أن يكون أكبر من شهر تاريخ الإبتداء !');
  215. this.checkSaveclick = false;
  216. } else if(startDateData[1] == endDateData[1] && startDateData[2] > endDateData[2]) {
  217. this.toastr.warning(' يوم تاريخ الإنتهاء يجب أن يكون أكبر من يوم تاريخ الإبتداء!');
  218. this.checkSaveclick = false;
  219. } else {
  220. this.dashBoardSer.editItem(this.maintenanceVehicleId,this.formData, 'vehicleMaintenance').subscribe(
  221. (responce) => {
  222. console.log(responce);
  223. this.toastr.success('تم التعديل بنجاح');
  224. this.location.back();
  225. this.checkSaveclick = false;
  226. },
  227. (error) => {
  228. console.log(error);
  229. this.toastr.error('يوجد مشكله في الخادم ، حاول لاحقاَ');
  230. this.checkSaveclick = false;
  231. }
  232. );
  233. }
  234. } else {
  235. if(startDateData[0] > endDateData[0]) {
  236. this.toastr.warning('سنه تاريخ الإنتهاء يجب أن تكون أكبر من سنه تاريخ الإنتهاء !');
  237. this.checkSaveclick = false;
  238. } else if(startDateData[1] > endDateData[1]) {
  239. this.toastr.warning('شهر تاريخ الانتهاء يجب أن يكون أكبر من شهر تاريخ الإبتداء !');
  240. this.checkSaveclick = false;
  241. } else if(startDateData[1] == endDateData[1] && startDateData[2] > endDateData[2]) {
  242. this.toastr.warning(' يوم تاريخ الإنتهاء يجب أن يكون أكبر من يوم تاريخ الإبتداء!');
  243. this.checkSaveclick = false;
  244. } else {
  245. this.dashBoardSer.addItem(this.vehicleForm.value, 'vehicleMaintenance').subscribe(
  246. (responce) => {
  247. console.log(responce);
  248. this.toastr.success('تم الإضافه بنجاح');
  249. this.location.back();
  250. this.checkSaveclick = false;
  251. },
  252. (error) => {
  253. console.log(error);
  254. this.toastr.error('يوجد مشكله في الخادم ، حاول لاحقاَ');
  255. this.checkSaveclick = false;
  256. }
  257. );
  258. }
  259. }
  260. }
  261. }