Exemple #1
0
        public async Task <ResponseEntity> RegisterAsync(int id, KhachHangGhiDanhViewModel modelVm)
        {
            try
            {
                if (await _khachHangRepository.GetSingleByIdAsync(id) == null)
                {
                    return(new ResponseEntity(StatusCodeConstants.NOT_FOUND));
                }

                DangKyViewModel dangKyModel = new DangKyViewModel()
                {
                    Email   = modelVm.Email,
                    MatKhau = modelVm.MatKhau,
                    HoTen   = modelVm.HoTen,
                    BiDanh  = modelVm.BiDanh,
                    SoDT    = modelVm.SoDT,
                    Avatar  = "/static/user-icon.png"
                };

                NguoiDung entity = await _nguoiDungRepository.GetByEmailAsync(modelVm.Email);

                // Tạo tài khoản cho khách hàng nếu chưa có
                if (entity == null)
                {
                    entity    = _mapper.Map <NguoiDung>(dangKyModel);
                    entity.Id = Guid.NewGuid().ToString();
                    // Mã hóa mật khẩu
                    entity.MatKhau     = BCrypt.Net.BCrypt.HashPassword(modelVm.MatKhau);
                    entity.MaNhomQuyen = "HOCVIEN";

                    entity = await _nguoiDungRepository.InsertAsync(entity);
                }
                // Lấy ra lớp học có id trùng với mã lớp học truyền lên
                LopHoc lopHoc = await _lopHocRepository.GetSingleByIdAsync(modelVm.MaLopHoc);

                //LopHocViewModel lopHocVm = _mapper.Map<LopHocViewModel>(lopHoc);
                // Thêm vào danh sách
                HashSet <string> dsHocVien = JsonConvert.DeserializeObject <HashSet <string> >(lopHoc.DanhSachHocVien);
                dsHocVien.Add(entity.Id);

                lopHoc.DanhSachHocVien = JsonConvert.SerializeObject(dsHocVien);

                // Cập nhật lại thông tin lớp
                await _lopHocRepository.UpdateAsync(lopHoc.Id, lopHoc);

                return(new ResponseEntity(StatusCodeConstants.CREATED, lopHoc, MessageConstants.SIGNUP_SUCCESS));
            }
            catch (Exception ex)
            {
                return(new ResponseEntity(StatusCodeConstants.ERROR_SERVER, ex.Message));
            }
        }
        public override async Task <ResponseEntity> InsertAsync(ChuyenLopViewModel modelVm)
        {
            try
            {
                List <KeyValuePair <string, dynamic> > columns = new List <KeyValuePair <string, dynamic> >();
                columns.Add(new KeyValuePair <string, dynamic>("MaNguoiDung", modelVm.MaNguoiDung));
                columns.Add(new KeyValuePair <string, dynamic>("MaLopChuyenDi", modelVm.MaLopChuyenDi));
                columns.Add(new KeyValuePair <string, dynamic>("MaLopChuyenDen", modelVm.MaLopChuyenDen));

                ChuyenLop entity = await _chuyenLopRepository.GetSingleByListConditionAsync(columns);

                if (entity != null)
                {
                    if (entity.MaLopChuyenDen != modelVm.MaLopChuyenDen && entity.MaLopChuyenDi != modelVm.MaLopChuyenDi)
                    {
                        entity.MaLopChuyenDi  = modelVm.MaLopChuyenDen;
                        entity.MaLopChuyenDen = modelVm.MaLopChuyenDi;
                        await _chuyenLopRepository.InsertAsync(entity);
                    }
                    return(new ResponseEntity(StatusCodeConstants.OK, modelVm, MessageConstants.UPDATE_SUCCESS));
                }

                // XÓA MÃ LỚP HỌC CŨ, THÊM MÃ LỚP HỌC MỚI VÀO DANH SÁCH LỚP HỌC CỦA BẢNG USER
                NguoiDung nguoiDung = await _nguoiDungRepository.GetSingleByIdAsync(modelVm.MaNguoiDung);

                HashSet <int> dsMaLopHoc = JsonConvert.DeserializeObject <HashSet <int> >(nguoiDung.DanhSachLopHoc);
                dsMaLopHoc.RemoveWhere(x => x == modelVm.MaLopChuyenDi);
                dsMaLopHoc.Add(modelVm.MaLopChuyenDen);
                nguoiDung.DanhSachLopHoc = JsonConvert.SerializeObject(dsMaLopHoc);

                // XÓA MÃ NGƯỜI DÙNG CỦA KHỎI LỚP HỌC CHUYỂN ĐI
                LopHoc lopChuyenDi = await _lopHocRepository.GetSingleByIdAsync(modelVm.MaLopChuyenDi);

                HashSet <string> dsMaNguoiDung = JsonConvert.DeserializeObject <HashSet <string> >(lopChuyenDi.DanhSachHocVien);
                dsMaNguoiDung.RemoveWhere(x => x == modelVm.MaNguoiDung);
                lopChuyenDi.DanhSachHocVien = JsonConvert.SerializeObject(dsMaNguoiDung);

                // THÊM MÃ NGƯỜI DÙNG VÀO LỚP HỌC CHUYỂN ĐẾN
                LopHoc lopChuyenDen = await _lopHocRepository.GetSingleByIdAsync(modelVm.MaLopChuyenDen);

                dsMaNguoiDung = JsonConvert.DeserializeObject <HashSet <string> >(lopChuyenDen.DanhSachHocVien);
                dsMaNguoiDung.Add(modelVm.MaNguoiDung);
                lopChuyenDen.DanhSachHocVien = JsonConvert.SerializeObject(dsMaNguoiDung);

                await _nguoiDungRepository.UpdateAsync(nguoiDung.Id, nguoiDung);

                await _lopHocRepository.UpdateAsync(lopChuyenDi.Id, lopChuyenDi);

                await _lopHocRepository.UpdateAsync(lopChuyenDen.Id, lopChuyenDen);

                modelVm.TenLopChuyenDi  = lopChuyenDi.TenLopHoc;
                modelVm.TenLopChuyenDen = lopChuyenDen.TenLopHoc;
                modelVm.NgayChuyen      = DateTime.Now.ToString("dd/MM/yyyy");
                entity = _mapper.Map <ChuyenLop>(modelVm);
                entity = await _chuyenLopRepository.InsertAsync(entity);

                return(new ResponseEntity(StatusCodeConstants.OK, modelVm, MessageConstants.UPDATE_SUCCESS));
            }
            catch (Exception ex)
            {
                return(new ResponseEntity(StatusCodeConstants.ERROR_SERVER, ex.Message));
            }
        }