1+ using System ;
2+ using System . Collections . Generic ;
3+ using System . Data . Entity ;
4+ using System . Linq ;
5+ using System . Net . Http ;
6+ using System . Web . Http ;
7+ using eFormAPI . Web . Infrastructure . Data ;
8+ using eFormAPI . Web . Infrastructure . Identity ;
9+ using eFormData ;
10+ using eFromAPI . Common . API ;
11+ using eFromAPI . Common . Models ;
12+ using eFromAPI . Common . Models . Auth ;
13+ using eFromAPI . Common . Models . User ;
14+ using Microsoft . AspNet . Identity ;
15+ using Microsoft . AspNet . Identity . Owin ;
16+ using Microsoft . Owin . Security ;
17+
18+ namespace eFormAPI . Web . Controllers
19+ {
20+ [ Authorize ]
21+ [ RoutePrefix ( "api/admin" ) ]
22+ public class AdminController : ApiController
23+ {
24+ private readonly BaseDbContext _dbContext ;
25+ private EformUserManager _eformUserManager ;
26+ private EformRoleManager _eformRoleManager ;
27+
28+ public AdminController ( BaseDbContext dbContext )
29+ {
30+ _dbContext = dbContext ;
31+ }
32+
33+ public EformUserManager UserManager
34+ {
35+ get => _eformUserManager ?? Request . GetOwinContext ( ) . GetUserManager < EformUserManager > ( ) ;
36+ private set => _eformUserManager = value ;
37+ }
38+
39+ public EformRoleManager RoleManager
40+ {
41+ get => _eformRoleManager ?? Request . GetOwinContext ( ) . GetUserManager < EformRoleManager > ( ) ;
42+ private set => _eformRoleManager = value ;
43+ }
44+
45+ [ HttpGet ]
46+ [ Route ( "user/{userId}" ) ]
47+ public OperationDataResult < UserRegisterModel > GetUser ( int userId )
48+ {
49+ try
50+ {
51+ var user = _dbContext . Users . Include ( x => x . Roles ) . FirstOrDefault ( x => x . Id == userId ) ;
52+
53+
54+ var model = new UserRegisterModel
55+ {
56+ Email = user ? . Email ,
57+ Id = userId ,
58+ FirstName = user . FirstName ,
59+ LastName = user . LastName
60+ } ;
61+
62+ // var userRoles = user.Roles.FirstOrDefault();
63+ //
64+ // if (userRoles != null)
65+ // {
66+ // model.Role = _eformRoleManager.FindById(userRoles.RoleId).Name;
67+ // }
68+
69+ return new OperationDataResult < UserRegisterModel > ( true , model ) ;
70+
71+ }
72+ catch ( Exception exception )
73+ {
74+ return new OperationDataResult < UserRegisterModel > ( false , "Error when obtaining users" ) ;
75+ }
76+ }
77+
78+ [ HttpPost ]
79+ [ Route ( "get-users" ) ]
80+ public OperationDataResult < List < UserInfoViewModel > > GetAllUsers ( PaginationModel paginationModel )
81+ {
82+ try
83+ {
84+ var userList = _dbContext . Users . Include ( x => x . Roles ) . ToList ( ) ;
85+
86+ var model = userList . Select ( user => new UserInfoViewModel
87+ {
88+ FirstName = user . FirstName ,
89+ LastName = user . LastName ,
90+ Email = user . Email ,
91+ Id = user . Id
92+ } )
93+ . ToList ( ) ;
94+
95+ return new OperationDataResult < List < UserInfoViewModel > > ( true , model ) ;
96+ }
97+ catch ( Exception exception )
98+ {
99+ return new OperationDataResult < List < UserInfoViewModel > > ( false , "Error when obtaining users" ) ;
100+ }
101+ }
102+
103+ [ HttpPost ]
104+ [ Route ( "update-user" ) ]
105+ public OperationResult UpdateUser ( UserRegisterModel userRegisterModel )
106+ {
107+ try
108+ {
109+ var user = _dbContext . Users . Include ( x => x . Roles ) . FirstOrDefault ( x => x . Id == userRegisterModel . Id ) ;
110+
111+ if ( user == null ) throw new Exception ( ) ;
112+
113+
114+ if ( userRegisterModel . Password . Equals ( userRegisterModel . PasswordConfimation ) )
115+ {
116+ user . Email = userRegisterModel . Email ;
117+ user . UserName = userRegisterModel . UserName ;
118+ user . FirstName = userRegisterModel . FirstName ;
119+ user . LastName = userRegisterModel . LastName ;
120+ user . PasswordHash = new PasswordHasher ( ) . HashPassword ( userRegisterModel . Password ) ;
121+ }
122+
123+ _dbContext . Entry ( user ) . State = EntityState . Modified ;
124+ _dbContext . SaveChanges ( ) ;
125+
126+ return new OperationResult ( true , $ "User { userRegisterModel . Id } was updated") ;
127+ }
128+ catch ( Exception exception )
129+ {
130+ return new OperationResult ( false , "Error when updating user" ) ;
131+ }
132+ }
133+
134+ [ HttpPost ]
135+ [ Route ( "delete-user/{userId}" ) ]
136+ public OperationResult DeleteUser ( int userId )
137+ {
138+ try
139+ {
140+ var user = _dbContext . Users . Include ( x => x . Roles ) . FirstOrDefault ( x => x . Id == userId ) ;
141+
142+ if ( user == null ) throw new Exception ( ) ;
143+
144+ _dbContext . Entry ( user ) . State = EntityState . Deleted ;
145+
146+ return new OperationResult ( true , $ "User { userId } was deleted") ;
147+ }
148+ catch ( Exception exception )
149+ {
150+ return new OperationResult ( false , "Error while deleting user" ) ;
151+ }
152+ }
153+ }
154+ }
0 commit comments