public IActionResult MyProfile() { try { if (UserLogin.ID > 0) { var res = new AccountUpSertDTO { Address = UserLogin.Address, Email = UserLogin.Email, FullName = UserLogin.FullName, ImageURL = UserLogin.ImageURL, Password = UserLogin.Password, PhoneNumber = UserLogin.Phone, UserName = UserLogin.UserName, }; return(View(res)); } return(RedirectToAction(nameof(Index))); } catch (Exception ex) { TempData["Error"] = ex.Message; return(RedirectToAction(nameof(Index))); } }
public async Task <IActionResult> Create(AccountUpSertDTO req) { using var transaction = _context.Database.BeginTransaction(); try { if (ModelState.IsValid) { if (await _context.Users.FirstOrDefaultAsync(u => u.Deleted != 1 && u.UserName.ToUpper().Contains(req.UserName)) == null) { var user = new User(); var imgPath = await Utils.SaveFile(req.Image, "Users"); user.Address = req.Address; user.Email = req.Email; user.FullName = req.FullName; user.ImageURL = imgPath; user.Password = CreateMD5Hash(req.Password); user.Role = req.Role; user.UserName = req.UserName; user.PhoneNumber = req.PhoneNumber; user.CreatedAt = DateTime.Now; user.UpdatedAt = DateTime.Now; transaction.CreateSavepoint("BeforeAddUser"); _context.Add(user); await _context.SaveChangesAsync(); if (req.Role == req.UserRole[1]) { var faculty = await _context.Faculties .FirstOrDefaultAsync(f => f.ID == req.TargetID && f.Deleted != 1 && (f.UserID == null || f.UserID == 0) ); if (faculty == null) { transaction.RollbackToSavepoint("BeforeAddUser"); TempData["Error"] = "Faculty was deleted or already has account or not exist"; return(View(req)); } faculty.UserID = user.ID; _context.Faculties.Update(faculty); await _context.SaveChangesAsync(); } else if (req.Role == req.UserRole[2]) { var student = await _context.Students .FirstOrDefaultAsync(f => f.ID == req.TargetID && f.Deleted != 1 && (f.UserID == null || f.UserID == 0) && f.Status == 1 ); if (student == null) { transaction.RollbackToSavepoint("BeforeAddUser"); TempData["Error"] = "Student was deleted or already has account or not exist or not addmission"; return(View(req)); } student.UserID = user.ID; _context.Students.Update(student); await _context.SaveChangesAsync(); } TempData["Success"] = MESSAGE_SUCCESS; await transaction.CommitAsync(); return(RedirectToAction(nameof(List))); } TempData["Error"] = "Username is already exist"; return(View(req)); } return(View(req)); } catch (Exception ex) { transaction.Rollback(); TempData["Error"] = ex.Message; return(View(req)); } }
public async Task <IActionResult> EditMyProfile(AccountUpSertDTO req) { try { if (UserLogin.ID > 0) { var user = _context.Users.FirstOrDefault(u => u.Deleted != 1 && u.ID == UserLogin.ID); if (user == null) { TempData["Error"] = "Authentication failed"; return(RedirectToAction(nameof(Logout))); } if (user.Role.Equals(ConstantVariables.ROLE_FACULTY)) { var faculty = _context.Faculties.FirstOrDefault(f => f.Deleted != 1 && f.UserID == user.ID); if (faculty == null) { TempData["Error"] = "Authentication failed"; return(RedirectToAction(nameof(Logout))); } var imgPath = await Utils.SaveFile(req.Image, "Faculty"); faculty.Address = req.Address; faculty.Email = req.Email; faculty.Name = req.FullName; faculty.ImageUrl = imgPath ?? faculty.ImageUrl; faculty.PhoneNumber = req.PhoneNumber; _context.Faculties.Update(faculty); } else if (user.Role.Equals(ConstantVariables.ROLE_STUDENT)) { var std = _context.Students.FirstOrDefault(f => f.Deleted != 1 && f.UserID == user.ID); if (std == null) { TempData["Error"] = "Authentication failed"; return(RedirectToAction(nameof(Logout))); } var imgPath = await Utils.SaveFile(req.Image, "Student"); std.PermanentAddress = req.Address; std.Email = req.Email; std.Name = req.FullName; std.ImageURL = imgPath ?? std.ImageURL; std.PhoneNumber = req.PhoneNumber; _context.Students.Update(std); } else { var imgPath = await Utils.SaveFile(req.Image, "Users"); user.Address = req.Address; user.Email = req.Email; user.FullName = req.FullName; user.ImageURL = imgPath ?? user.ImageURL; user.PhoneNumber = req.PhoneNumber; _context.Users.Update(user); } await _context.SaveChangesAsync(); TempData["Success"] = "Update profile successfully"; return(RedirectToAction(nameof(MyProfile))); } return(RedirectToAction(nameof(MyProfile), req)); } catch (Exception ex) { TempData["Error"] = ex.Message; return(RedirectToAction(nameof(Index))); } }