11use crate :: {
22 models:: {
3- activities:: { Activity , ActivityMember } , groups:: GroupPermission , response:: { ErrorResponse , ResponseStatus , SuccessResponse }
3+ activities:: { Activity , ActivityMember } , groups:: GroupPermission , response:: { create_error , ResponseStatus , SuccessResponse }
44 } ,
55 utils:: { groups:: same_class, jwt:: UserData } ,
66} ;
@@ -25,86 +25,38 @@ pub async fn read_member(
2525 let collection = db. collection ( "activities" ) ;
2626 let activity_id = ObjectId :: from_str ( id. as_str ( ) ) ;
2727 if let Err ( _) = activity_id {
28- let response = ErrorResponse {
29- status : ResponseStatus :: Error ,
30- code : 400 ,
31- message : "Invalid activity ID" . to_string ( ) ,
32- } ;
33- let response = serde_json:: to_string ( & response) . unwrap ( ) ;
34- return ( StatusCode :: BAD_REQUEST , Json ( response) ) ;
28+ return create_error ( StatusCode :: BAD_REQUEST , "Invalid activity ID" . to_string ( ) ) ;
3529 }
3630 let activity_id = activity_id. unwrap ( ) ;
3731 let member_id = ObjectId :: from_str ( member_id. as_str ( ) ) ;
3832 if let Err ( _) = member_id {
39- let response = ErrorResponse {
40- status : ResponseStatus :: Error ,
41- code : 400 ,
42- message : "Invalid member ID" . to_string ( ) ,
43- } ;
44- let response = serde_json:: to_string ( & response) . unwrap ( ) ;
45- return ( StatusCode :: BAD_REQUEST , Json ( response) ) ;
33+ return create_error ( StatusCode :: BAD_REQUEST , "Invalid member ID" . to_string ( ) ) ;
4634 }
4735 let member_id = member_id. unwrap ( ) ;
4836 let activity = collection. find_one ( doc ! { "_id" : activity_id, "members._id" : member_id} , None ) . await ;
4937 if let Err ( _) = activity {
50- let response = ErrorResponse {
51- status : ResponseStatus :: Error ,
52- code : 404 ,
53- message : "Activity not found" . to_string ( ) ,
54- } ;
55- let response = serde_json:: to_string ( & response) . unwrap ( ) ;
56- return ( StatusCode :: NOT_FOUND , Json ( response) ) ;
38+ return create_error ( StatusCode :: INTERNAL_SERVER_ERROR , "Failed to find activity" . to_string ( ) ) ;
5739 }
5840 let activity = activity. unwrap ( ) ;
5941 if let None = activity {
60- let response = ErrorResponse {
61- status : ResponseStatus :: Error ,
62- code : 404 ,
63- message : "Activity not found" . to_string ( ) ,
64- } ;
65- let response = serde_json:: to_string ( & response) . unwrap ( ) ;
66- return ( StatusCode :: NOT_FOUND , Json ( response) ) ;
42+ return create_error ( StatusCode :: NOT_FOUND , "Activity not found" . to_string ( ) ) ;
6743 }
6844 let activity: Activity = bson:: from_document ( activity. unwrap ( ) ) . unwrap ( ) ;
6945 if user. perms . contains ( & GroupPermission :: Admin ) || user. perms . contains ( & GroupPermission :: Department ) || user. perms . contains ( & GroupPermission :: Auditor ) || user. id == member_id. clone ( ) . to_string ( ) { } else if user. perms . contains ( & GroupPermission :: Secretary ) {
7046 let user_id = ObjectId :: from_str ( & user. id ) . unwrap ( ) ;
7147 let same = same_class:: validate_same_class ( db_clone, member_id, user_id) . await ;
7248 if let Err ( e) = same {
73- let response = ErrorResponse {
74- status : ResponseStatus :: Error ,
75- code : 500 ,
76- message : "Cannot validate user" . to_string ( ) + & e,
77- } ;
78- let response = serde_json:: to_string ( & response) . unwrap ( ) ;
79- return ( StatusCode :: INTERNAL_SERVER_ERROR , Json ( response) ) ;
49+ return create_error ( StatusCode :: INTERNAL_SERVER_ERROR , "Cannot validate user" . to_string ( ) + & e) ;
8050 }
8151 if !same. unwrap ( ) {
82- let response = ErrorResponse {
83- status : ResponseStatus :: Error ,
84- code : 403 ,
85- message : "Permission denied" . to_string ( ) ,
86- } ;
87- let response = serde_json:: to_string ( & response) . unwrap ( ) ;
88- return ( StatusCode :: FORBIDDEN , Json ( response) ) ;
52+ return create_error ( StatusCode :: FORBIDDEN , "Permission denied" . to_string ( ) ) ;
8953 }
9054 } else {
91- let response = ErrorResponse {
92- status : ResponseStatus :: Error ,
93- code : 403 ,
94- message : "Permission denied" . to_string ( ) ,
95- } ;
96- let response = serde_json:: to_string ( & response) . unwrap ( ) ;
97- return ( StatusCode :: FORBIDDEN , Json ( response) ) ;
55+ return create_error ( StatusCode :: FORBIDDEN , "Permission denied" . to_string ( ) ) ;
9856 }
9957 let member = activity. members . unwrap_or_default ( ) . into_iter ( ) . find ( |member| member. _id == member_id) ;
10058 if let None = member {
101- let response = ErrorResponse {
102- status : ResponseStatus :: Error ,
103- code : 404 ,
104- message : "Member not found" . to_string ( ) ,
105- } ;
106- let response = serde_json:: to_string ( & response) . unwrap ( ) ;
107- return ( StatusCode :: NOT_FOUND , Json ( response) ) ;
59+ return create_error ( StatusCode :: NOT_FOUND , "Member not found" . to_string ( ) ) ;
10860 }
10961 let member = member. unwrap ( ) ;
11062 let response: SuccessResponse < ActivityMember , ( ) > = SuccessResponse {
0 commit comments