register-movement-vehicle-add.component.ts 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  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-register-movement-vehicle-add',
  12. templateUrl: './register-movement-vehicle-add.component.html',
  13. styleUrls: ['./register-movement-vehicle-add.component.css']
  14. })
  15. export class RegisterMovementVehicleAddComponent implements OnInit {
  16. constructor(private dashBoardSer: DashboardService,
  17. private toastr: ToastrService,
  18. private 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. checkSaveclick:boolean = false;
  31. typeMode: boolean = false;
  32. licenseNum = [];
  33. show : boolean = false;
  34. vehicleId: number;
  35. vehicleNumber: number;
  36. vehicle_types:any[] = [];
  37. modelNames:any[] = [];
  38. vehicleDataTable:any[]=[];
  39. registerVehicleId: number;
  40. startDate: string = '';
  41. endDate: string = '';
  42. checkEdit: boolean =false;
  43. count: number;
  44. perPagePagenation: number;
  45. currentPage:number = 1;
  46. dataTableNumber: number = 5;
  47. formData = {
  48. vehicle_type_id: '',
  49. vehicle_id: '',
  50. vehicle_recipient_name: '',
  51. phone: '',
  52. start_mileage_recording: '',
  53. end_mileage_recording: '',
  54. movement_notes: '',
  55. }
  56. ngOnInit() {
  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.registerVehicleId = params['registerMovementVehicleEditId'];
  68. }
  69. );
  70. if(this.registerVehicleId) {
  71. this.spinner.show();
  72. this.typePage = 'تعديل';
  73. this.typeMode = true;
  74. this.dashBoardSer.getItemData(this.registerVehicleId, 'registerMovementVehicle').subscribe(
  75. (responce) => {
  76. console.log(responce);
  77. this.formData.phone = responce['movement'].phone;
  78. this.formData.movement_notes = responce['movement'].movement_notes;
  79. this.formData.vehicle_id = responce['movement'].vehicle_id;
  80. this.formData.vehicle_recipient_name = responce['movement'].vehicle_recipient_name;
  81. this.formData.end_mileage_recording = responce['movement'].end_mileage_recording;
  82. this.formData.start_mileage_recording = responce['movement'].start_mileage_recording;
  83. this.formData.vehicle_type_id = responce['movement'].vehicle_type_id;
  84. this.getLicenseNum(this.formData.vehicle_type_id);
  85. this.checkEdit = true;
  86. this.startDate = responce['movement'].vehicle_receipt_date;
  87. this.endDate = responce['movement'].vehicle_delivery_date;
  88. this.bindingDateSplitStart = {
  89. year: parseInt(responce['movement'].vehicle_receipt_date.split('-')[0]),
  90. month: parseInt(responce['movement'].vehicle_receipt_date.split('-')[1]),
  91. day: parseInt(responce['movement'].vehicle_receipt_date.split('-')[2]),
  92. }
  93. this.bindingDateSplitEnd = {
  94. year: parseInt(responce['movement'].vehicle_delivery_date.split('-')[0]),
  95. month: parseInt(responce['movement'].vehicle_delivery_date.split('-')[1]),
  96. day: parseInt(responce['movement'].vehicle_delivery_date.split('-')[2]),
  97. }
  98. this.spinner.hide();
  99. },
  100. (error) => {
  101. console.log(error);
  102. }
  103. );
  104. this.dashBoardSer.getDataUSerSearchBar(this.vehicleNumber,
  105. 47,
  106. this.currentPage,
  107. this.dataTableNumber).subscribe(
  108. (responce) => {
  109. console.log('search table edit ', responce);
  110. this.vehicleDataTable = responce['vehicle_movements'];
  111. },
  112. (error) => {
  113. console.log(error);
  114. }
  115. );
  116. } else {
  117. this.typePage = 'إضافه';
  118. }
  119. }
  120. //get value date from child component
  121. public getDate(date: any , type: string):void {
  122. if(date.month < 10) {
  123. date.month = '0' + date.month;
  124. }
  125. if(date.day < 10) {
  126. date.day = '0' + date.day;
  127. }
  128. console.log( date);
  129. if(type == 'start') {
  130. this.startDate = date.year + '-' + date.month + '-' + date.day;
  131. console.log('start date', this.startDate);
  132. } else if(type == 'end') {
  133. this.endDate = date.year + '-' + date.month + '-' + date.day;
  134. console.log('end date', this.endDate);
  135. } else {
  136. console.log('not type recieved !');
  137. }
  138. }
  139. //change page
  140. onPageChange(pagenationNumber) {
  141. this.spinner.show();
  142. this.currentPage = pagenationNumber;
  143. this.vehicleDataTable = [];
  144. //console.log(pagenationNumber);
  145. //console.log(this.pageId);
  146. this.dashBoardSer.getListData(47, pagenationNumber, this.dataTableNumber).subscribe(
  147. (responce) => {
  148. console.log('search result ', responce);
  149. this.vehicleDataTable = responce['vehicle_movements'];
  150. this.count = responce['count'];
  151. this.perPagePagenation = responce['per_page'];
  152. console.log(this.vehicleDataTable);
  153. this.spinner.hide();
  154. },
  155. (error) => {
  156. console.log(error);
  157. this.spinner.hide();
  158. }
  159. );
  160. };
  161. //determine the list count from select element
  162. onGetValue(event) {
  163. this.spinner.show();
  164. this.vehicleDataTable = [];
  165. this.dataTableNumber = event.target.value;
  166. this.dashBoardSer.getListData(47, this.currentPage, this.dataTableNumber).subscribe(
  167. (responce) => {
  168. console.log(responce);
  169. this.vehicleDataTable = responce['vehicle_movements'];
  170. this.count = responce['count'];
  171. this.perPagePagenation = responce['per_page'];
  172. this.spinner.hide();
  173. },
  174. (error) => {
  175. console.log(error);
  176. this.spinner.hide();
  177. }
  178. );
  179. };
  180. onChangeVehicleTypee(event){
  181. this.licenseNum = [];
  182. const typeId = event.target.value;
  183. this.getLicenseNum(typeId)
  184. }
  185. getLicenseNum(typeId){
  186. this.http.get(this.authSer.pathApi + '/get_vehicles_by_type_id/' + typeId ).subscribe(
  187. (response) => {
  188. console.log(response);
  189. this.licenseNum = response['vehicles'];
  190. this.show = true;
  191. },
  192. (error) => {
  193. console.log(error);
  194. }
  195. );
  196. }
  197. getModelName(typeVehicleId) {
  198. this.http.get(this.authSer.pathApi + '/get_vehicle_models_by_type_id/' + typeVehicleId).subscribe(
  199. (responce) => {
  200. console.log('types names of vehicles ', responce);
  201. this.modelNames = responce['models'];
  202. if(this.modelNames.length == 0) {
  203. this.toastr.warning('لا يوجد اسماء موديل لهذا النوع');
  204. }
  205. },
  206. (error) => {
  207. console.log(error);
  208. }
  209. )
  210. }
  211. onChangeVehicleType(event){
  212. this.licenseNum = [];
  213. const typeId = event.target.value;
  214. this.getLicenseNum(typeId)
  215. }
  216. onSubmitted() {
  217. this.checkSaveclick = true;
  218. delete this.vehicleForm.value['vehicle_type_id'];
  219. this.vehicleForm.value['vehicle_receipt_date'] = this.startDate;
  220. this.vehicleForm.value['vehicle_delivery_date'] = this.endDate;
  221. console.log(this.vehicleForm.value);
  222. const startDateData = this.startDate.split('-');
  223. const endDateData = this.endDate.split('-');
  224. if(this.typeMode) {
  225. if(startDateData[0] > endDateData[0]) {
  226. this.toastr.warning('سنه تاريخ الإنتهاء يجب أن تكون أكبر من سنه تاريخ الإنتهاء !');
  227. this.checkSaveclick = false;
  228. } else if(startDateData[0] == endDateData[0] && startDateData[1] > endDateData[1]){
  229. this.toastr.warning('شهر تاريخ الانتهاء يجب أن يكون أكبر من شهر تاريخ الإبتداء !');
  230. this.checkSaveclick = false;
  231. } else if(startDateData[1] == endDateData[1] && startDateData[2] > endDateData[2]){
  232. this.toastr.warning(' يوم تاريخ الإنتهاء يجب أن يكون أكبر من يوم تاريخ الإبتداء!');
  233. this.checkSaveclick = false;
  234. } else {
  235. this.dashBoardSer.editItem( this.registerVehicleId, this.vehicleForm.value, 'registerMovementVehicle').subscribe(
  236. (responce) => {
  237. console.log(responce);
  238. this.toastr.success('تم التعديل بنجاح');
  239. this.location.back();
  240. },
  241. (error) => {
  242. console.log(error);
  243. this.toastr.error('خطأ في الخادم ، حاول لاحقاً');
  244. this.checkSaveclick = false;
  245. }
  246. );
  247. }
  248. } else {
  249. if(startDateData[0] > endDateData[0]) {
  250. this.toastr.warning('سنه تاريخ الإنتهاء يجب أن تكون أكبر من سنه تاريخ الإنتهاء !');
  251. this.checkSaveclick = false;
  252. } else if(startDateData[0] == endDateData[0] && startDateData[1] > endDateData[1]){
  253. this.toastr.warning('شهر تاريخ الانتهاء يجب أن يكون أكبر من شهر تاريخ الإبتداء !');
  254. this.checkSaveclick = false;
  255. } else if(startDateData[1] == endDateData[1] && startDateData[2] > endDateData[2]){
  256. this.toastr.warning(' يوم تاريخ الإنتهاء يجب أن يكون أكبر من يوم تاريخ الإبتداء!');
  257. this.checkSaveclick = false;
  258. } else {
  259. this.dashBoardSer.addItem(this.vehicleForm.value, 'registerMovementVehicle').subscribe(
  260. (responce) => {
  261. console.log(responce);
  262. this.toastr.success('تم الإضافه بنجاح');
  263. this.location.back();
  264. this.checkSaveclick = false;
  265. },
  266. (error) => {
  267. this.checkSaveclick = false;
  268. console.log(error);
  269. console.log(this.vehicleForm.value['phone'].length);
  270. if(this.vehicleForm.value['phone'].length < 10) {
  271. this.toastr.warning('رقم الجوال يجب أن يكون مكون 10 أرقام')
  272. } else {
  273. this.toastr.error('خطأ في الخادم ، برجاء المحاوله لاحقا');
  274. }
  275. }
  276. );
  277. }
  278. }
  279. }
  280. }