Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.43 KB | None | 0 0
  1. DROP FUNCTION IF EXISTS STATISTICS;
  2. CREATE FUNCTION STATISTICS(uid INT)
  3. RETURNS TEXT
  4. BEGIN
  5.  
  6. DECLARE area_number INT DEFAULT 1;
  7. DECLARE total_areas INT DEFAULT 0;
  8. DECLARE completed_areas INT DEFAULT 0;
  9. DECLARE price_ft DECIMAL(5,3) DEFAULT 0.00;
  10. DECLARE price_fm DECIMAL(5,3) DEFAULT 0.00;
  11. DECLARE report_json TEXT DEFAULT '{}';
  12.  
  13.  
  14. SELECT COUNT(id) FROM associations INTO total_areas;
  15.  
  16. SET price_ft = (SELECT price FROM price WHERE name='tel');
  17. SET price_fm = (SELECT price FROM price WHERE name='mail');
  18.  
  19. SELECT JSON_INSERT(report_json, '$.currently_work_area', (SELECT association_id FROM dfb_league_clubs WHERE ticket IS NOT NULL ORDER BY id DESC LIMIT 1)) INTO report_json;
  20. SELECT JSON_INSERT(report_json, '$.currently_work_area_name', (SELECT gebiet FROM dfb_leagues WHERE id=(SELECT association_id FROM dfb_league_clubs WHERE ticket IS NOT NULL ORDER BY id DESC LIMIT 1))) INTO report_json;
  21.  
  22. SELECT JSON_INSERT(report_json, '$.my_paid', (SELECT SUM(paid) FROM user_paid WHERE for_user=uid)) INTO report_json;
  23.  
  24. WHILE area_number <= total_areas DO
  25.  
  26. SET @current_area_name = (SELECT name FROM associations WHERE id=area_number );
  27. SET @total_league_in_area = (SELECT COUNT(id) FROM dfb_leagues WHERE association_id=area_number);
  28. SET @completed_league_in_area = (SELECT COUNT(id) FROM dfb_leagues WHERE association_id=area_number AND (completed=1 OR error=1));
  29.  
  30. SET @area_start_date = (SELECT begin_update FROM dfb_league_clubs WHERE association_id=area_number ORDER BY id ASC LIMIT 1);
  31. SET @area_end_date = (SELECT end_update FROM dfb_league_clubs WHERE association_id=area_number AND completed=1 ORDER BY id DESC LIMIT 1);
  32. SET @area_missing_page = (SELECT COUNT(id) FROM dfb_league_clubs WHERE association_id=area_number AND (to_facebook=1 OR rating_no_page=1) AND completed=1);
  33. SET @area_start_date_f = '';
  34. SET @area_end_date_f = '';
  35. SET @area_total_day = '';
  36. SET @area_total_work_time = '';
  37. IF( @area_start_date IS NOT NULL AND @area_end_date IS NOT NULL ) THEN
  38. SET @area_start_date_f = (SELECT DATE_FORMAT(@area_start_date, '%d.%m.%Y'));
  39. SET @area_end_date_f = (SELECT DATE_FORMAT(@area_end_date, '%d.%m.%Y'));
  40. SET @area_total_day = (SELECT DATEDIFF( @area_end_date, @area_start_date ));
  41. SET @area_total_work_time = (SELECT DATEDIFF( @area_end_date, @area_start_date ));
  42. END IF ;
  43.  
  44. SET @total_club_in_area = (SELECT COUNT(id) FROM dfb_league_clubs WHERE association_id=area_number);
  45. SET @completed_club_in_area = (SELECT COUNT(id) FROM dfb_league_clubs WHERE completed=1 AND association_id=area_number);
  46. SET @completed_club_in_area_with_email = (SELECT COUNT(id) FROM dfb_league_clubs WHERE association_id=area_number AND completed=1 AND email IS NOT NULL);
  47.  
  48. SET @added_contact_in_area = (SELECT COUNT(id) FROM club_contacts WHERE association_id=area_number);
  49.  
  50.  
  51.  
  52. SET @added_contact_with_tel = (SELECT COUNT(id) FROM club_contacts WHERE association_id=area_number AND mobil IS NOT NULL);
  53. SET @added_contact_with_mail = (SELECT COUNT(id) FROM club_contacts WHERE association_id=area_number AND email IS NOT NULL);
  54. SET @added_contact_with_combine = (SELECT COUNT(id) FROM club_contacts WHERE association_id=area_number AND email IS NOT NULL AND mobil IS NOT NULL);
  55.  
  56.  
  57. SET @my_added_contact = (SELECT COUNT(id) FROM club_contacts WHERE association_id=area_number AND user_id=uid);
  58. SET @my_completed_clubs = (SELECT COUNT(id) FROM dfb_league_clubs WHERE association_id=area_number AND user_id=uid AND completed=1);
  59.  
  60. SET @my_added_clubs_with_mail = (SELECT COUNT(id) FROM dfb_league_clubs WHERE association_id=area_number AND user_id=uid AND completed=1 AND email IS NOT NULL);
  61. SET @my_added_contact_with_tel = (SELECT COUNT(id) FROM club_contacts WHERE association_id=area_number AND user_id=uid AND mobil IS NOT NULL);
  62. SET @my_added_contact_with_mail = (SELECT COUNT(id) FROM club_contacts WHERE association_id=area_number AND user_id=uid AND email IS NOT NULL);
  63. SET @my_added_contact_with_combine = (SELECT COUNT(id) FROM club_contacts WHERE association_id=area_number AND user_id=uid AND email IS NOT NULL AND mobil IS NOT NULL);
  64.  
  65. SET @json_string = CONCAT(
  66. '{
  67. "name":"', @current_area_name,'",
  68. "total_league":"', @total_league_in_area,'",
  69. "completed_league":"', @completed_league_in_area,'",
  70. "total_club":"', @total_club_in_area,'",
  71. "completed_club":"', @completed_club_in_area,'",
  72. "completed_club_in_area_with_email":"', @completed_club_in_area_with_email,'",
  73. "area_missing_page":"', @area_missing_page,'",
  74. "area_start_date":"', @area_start_date_f,'",
  75. "area_end_date":"', @area_end_date_f,'",
  76. "area_work_day":"', @area_total_day,'",
  77. "total_contact":"', @added_contact_in_area,'",
  78. "added_contact_with_tel":"', @added_contact_with_tel,'",
  79. "added_contact_with_mail":"', @added_contact_with_mail,'",
  80. "added_contact_with_combine":"', @added_contact_with_combine,'",
  81. "my_completed_clubs":"', @my_completed_clubs,'",
  82. "my_added_clubs_with_mail":"', @my_added_clubs_with_mail,'",
  83. "my_added_contact":"', @my_added_contact,'",
  84. "my_added_contact_with_tel":"', @my_added_contact_with_tel,'",
  85. "my_added_contact_with_mail":"', @my_added_contact_with_mail,'",
  86. "my_added_contact_with_combine":"', @my_added_contact_with_combine,'"
  87. }'
  88. );
  89.  
  90.  
  91. SELECT JSON_MERGE(report_json, @json_string) INTO report_json;
  92.  
  93. SET area_number = area_number + 1;
  94.  
  95.  
  96. END WHILE;
  97.  
  98. RETURN report_json;
  99.  
  100. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement