Example #1
0
 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)));
     }
 }
Example #2
0
        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));
            }
        }
Example #3
0
        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)));
            }
        }