Esempio n. 1
0
        internal void LogoutUser()
        {
            logger.Debug("Recived log out request");
            try
            {
                CurrentUser currentUser = (CurrentUser)HttpContext.Current.User;
                if (String.IsNullOrEmpty(currentUser.token))
                {
                    logger.Error("token is empty for user");
                    throw new CustomException("token is empty for user", (int)ErrorCode.UNAUTHORIZED);
                }

                using (var ctx = new PetWhizzEntities())
                {
                    userToken currentToken = ctx.userTokens.Where(a => a.token.Equals(currentUser.token)).FirstOrDefault();
                    if (currentToken == null)
                    {
                        logger.Error("token is not found on DB");
                        throw new CustomException("token is not found on DB", (int)ErrorCode.UNAUTHORIZED);
                    }

                    ctx.userTokens.Attach(currentToken);
                    currentToken.expiryTime = null;
                    ctx.SaveChanges();
                    logger.Debug("successfully logout user - " + currentUser.username);
                }
            }
            catch (CustomException) { throw; }
            catch (Exception ex)
            {
                logger.Error(MethodBase.GetCurrentMethod().Name + ": exception: " + ex.Message + ", " + ex.InnerException);
                throw new CustomException("SystemError", ex, (int)ErrorCode.PROCEESINGERROR); throw;
            }
        }
        public async Task <ResponseEntity> ThongTinTaiKhoan()
        {
            var       accessToken = Request.Headers[HeaderNames.Authorization];
            userToken tttk        = commonService.getUserByToken(accessToken).Result;

            if (tttk == null)
            {
                return(new ResponseEntity(StatusCodeConstants.AUTHORIZATION, "Token đã hết hạn bạn hãy đăng nhập lại!", MessageConstant.MESSAGE_ERROR_401));
            }

            NguoiDung tt = db.NguoiDung.SingleOrDefault(n => n.TaiKhoan == tttk.taiKhoan);

            if (tt == null)
            {
                // I wish to return an error response how can i do that?
                //var response = await tbl.TBLoi(ThongBaoLoi.Loi400, "Tài khoản không hợp lệ!");
                //return response;
                return(new ResponseEntity(StatusCodeConstants.BAD_REQUEST, "Tài khoản không hợp lệ!", MessageConstant.BAD_REQUEST));
            }
            IEnumerable <DatVe>  lstDatVe         = db.DatVe.Where(n => n.TaiKhoanNguoiDung == tttk.taiKhoan).ToList();
            List <ThongTinDatVe> lstThongTinDatVe = new List <ThongTinDatVe>();

            if (lstDatVe.Count() != 0)
            {
                foreach (var item in lstDatVe.GroupBy(n => n.MaLichChieu))
                {
                    ThongTinDatVe ttdv = new ThongTinDatVe();
                    ttdv.MaVe = item.First().MaVe;
                    foreach (var ghe in item)
                    {
                        Ghe         gheNavigation = ghe.MaGheNavigation;
                        Rap         rap           = ghe.MaGheNavigation.MaRapNavigation;
                        CumRap      cumRap        = rap.MaCumRapNavigation;
                        HeThongRap  heThongRap    = cumRap.MaHeThongRapNavigation;
                        ThongTinGhe ttg           = new ThongTinGhe()
                        {
                            MaCumRap = rap.TenRap, TenCumRap = rap.TenRap, MaGhe = ghe.MaGhe, TenGhe = gheNavigation.TenGhe, MaRap = gheNavigation.MaRap, TenRap = rap.TenRap, MaHeThongRap = heThongRap.MaHeThongRap, TenHeThongRap = cumRap.TenCumRap
                        };
                        ttdv.DanhSachGhe.Add(ttg);
                    }
                    ttdv.NgayDat       = item.First().NgayDat.Value;
                    ttdv.HinhAnh       = DomainImage + item.First().MaLichChieuNavigation.MaPhimNavigation.HinhAnh;
                    ttdv.TenPhim       = item.First().MaLichChieuNavigation.MaPhimNavigation.TenPhim;
                    ttdv.GiaVe         = item.First().GiaVe.Value;
                    ttdv.ThoiLuongPhim = item.First().MaLichChieuNavigation.ThoiLuong.Value;
                    lstThongTinDatVe.Add(ttdv);
                }
            }

            ThongTinTaiKhoanVM ttTK = Mapper.Map <NguoiDung, ThongTinTaiKhoanVM>(tt);

            ttTK.ThongTinDatVe = lstThongTinDatVe;

            return(new ResponseEntity(StatusCodeConstants.OK, ttTK, MessageConstant.MESSAGE_SUCCESS_200));

            //return Ok(ttTK);
        }
Esempio n. 3
0
        internal RefreshTokenResponse RefreshToken(RefreshTokenRequest refreshTokenRequest)
        {
            logger.Debug("Recived RefreshToken request");
            RefreshTokenResponse RefreshTokenResponse;

            try
            {
                if (String.IsNullOrEmpty(refreshTokenRequest.token))
                {
                    logger.Error("Refresh token validation failed");
                    throw new CustomException("Refresh token validation failed.Token is null", (int)ErrorCode.VALIDATIONFAILED);
                }
                refreshTokenRequest.token = Decryptor.Decrypt(refreshTokenRequest.token).Split('|')[1];
                String NewToken = Guid.NewGuid().ToString();
                using (var ctx = new PetWhizzEntities())
                {
                    userToken UserToken = ctx.userTokens.Where(a => a.token == refreshTokenRequest.token && a.tokenType == "AUTHTOKEN").FirstOrDefault();
                    if (UserToken == null)
                    {
                        logger.Error("token is invalid");
                        throw new CustomException(" token is invalid", (int)ErrorCode.UNAUTHORIZED);
                    }
                    //update existing token
                    ctx.userTokens.Attach(UserToken);
                    UserToken.generatedTime = DateTime.Now;
                    UserToken.token         = NewToken;
                    UserToken.expiryTime    = DateTime.Now.AddSeconds(TokenExpiryTime);
                    ctx.SaveChanges();

                    RefreshTokenResponse = new RefreshTokenResponse()
                    {
                        token = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + NewToken),
                    };
                }
            }
            catch (CustomException) { throw; }
            catch (Exception ex)
            {
                logger.Error(MethodBase.GetCurrentMethod().Name + ": exception: " + ex.Message + ", " + ex.InnerException);
                throw new CustomException("SystemError", ex, (int)ErrorCode.PROCEESINGERROR);
            }
            return(RefreshTokenResponse);
        }
        public async Task <ResponseEntity> DatVe(DanhSachVeDat DanhSachVe)
        {
            var accessToken = Request.Headers[HeaderNames.Authorization];

            userToken usToken = commonService.getUserByToken(accessToken).Result;

            if (usToken == null)
            {
                return(new ResponseEntity(StatusCodeConstants.AUTHORIZATION, "Token đã hết hạn bạn hãy đăng nhập lại!", MessageConstant.MESSAGE_ERROR_401));
            }

            var nd = db.NguoiDung.Where(n => n.TaiKhoan == usToken.taiKhoan);

            if (nd.Count() == 0)
            {
                return(new ResponseEntity(StatusCodeConstants.ERROR_SERVER, "Tài khoản người dùng không tồn tại!", MessageConstant.MESSAGE_ERROR_500));

                //return await tbl.TBLoi(ThongBaoLoi.Loi500, "Tài khoản người dùng không tồn tại!");
            }
            if (DanhSachVe == null)
            {
                return(new ResponseEntity(StatusCodeConstants.ERROR_SERVER, "Danh sách vé rỗng!", MessageConstant.MESSAGE_ERROR_500));

                //return Ok("Danh sách vé rỗng!");
            }

            foreach (var ve in DanhSachVe.DanhSachVe)
            {
                DatVe dv = new DatVe();
                dv.NgayDat           = DateTime.Now;
                dv.MaGhe             = ve.MaGhe;
                dv.GiaVe             = ve.GiaVe;
                dv.TaiKhoanNguoiDung = usToken.taiKhoan;
                dv.MaLichChieu       = DanhSachVe.MaLichChieu;
                db.DatVe.Add(dv);
            }
            db.SaveChanges();
            return(new ResponseEntity(StatusCodeConstants.OK, "Đặt vé thành công!", MessageConstant.MESSAGE_SUCCESS_200));

            //return Ok("Đặt vé thành công!");
        }
 public async Task <userToken> getUserByToken(string tokenString)
 {
     try
     {
         //tokenString = tokenString.Replace("Bearer ", "").Trim();
         dbRapChieuPhimContext db = new dbRapChieuPhimContext();
         string    taiKhoan       = parseJWTToEmail(tokenString);
         userToken nguoiDung      = db.NguoiDung.Where(n => n.TaiKhoan == taiKhoan).Select(n => new userToken {
             taiKhoan = n.TaiKhoan, email = n.Email, maLoaiNguoiDung = n.MaLoaiNguoiDung, maNhom = n.MaNhom
         }).FirstOrDefault();
         if (nguoiDung != null)
         {
             return(nguoiDung);
         }
         return(null);
     }
     catch (Exception ex)
     {
         return(null);
     }
 }
Esempio n. 6
0
        internal UserLoginResponse UserLogin(UserLoginRequest userLoginRequest)
        {
            logger.Debug("Recived user login request");
            UserLoginResponse UserLoginResponse;

            try
            {
                String GeneratedToken = Guid.NewGuid().ToString();

                userLoginRequest.deviceId = Decryptor.Decrypt(userLoginRequest.deviceId).Split('|')[1];
                userLoginRequest.username = Decryptor.Decrypt(userLoginRequest.username).Split('|')[1];
                userLoginRequest.password = Decryptor.Decrypt(userLoginRequest.password).Split('|')[1];
                logger.Debug("Recived user login request with username - " + userLoginRequest.username + " password - " + userLoginRequest.password + " deviceId - " + userLoginRequest.deviceId);
                if (!String.IsNullOrEmpty(userLoginRequest.deviceId) &&
                    !String.IsNullOrEmpty(userLoginRequest.username) &&
                    !String.IsNullOrEmpty(userLoginRequest.password))
                {
                    using (var ctx = new PetWhizzEntities())
                    {
                        //checking for user
                        user User = ctx.users.Where(a => a.userName.ToLower().Equals(userLoginRequest.username.ToLower()) &&
                                                    a.password == userLoginRequest.password).FirstOrDefault();
                        if (User == null)
                        {
                            logger.Error("Login failed for user - " + userLoginRequest.username);
                            throw new CustomException("Username or Password Invalid", (int)ErrorCode.LOGINFAILURE);
                        }
                        UserLoginResponse = new UserLoginResponse()
                        {
                            email    = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + User.eMail),
                            status   = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + User.status),
                            token    = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + GeneratedToken),
                            username = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + User.userName),
                            userId   = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + User.id.ToString())
                        };
                        //checking for device
                        userDevice UserDevice = ctx.userDevices.Where(a => a.userId == User.id && a.deviceId == userLoginRequest.deviceId).FirstOrDefault();
                        if (UserDevice == null)
                        {
                            //new device
                            var userDevice = new userDevice()
                            {
                                deviceId   = userLoginRequest.deviceId,
                                deviceName = "",
                                userId     = User.id,
                            };
                            ctx.userDevices.Add(userDevice);
                            ctx.SaveChanges();

                            //saving user token
                            var userToken = new userToken()
                            {
                                tokenType     = "AUTHTOKEN",
                                useCount      = 0,
                                generatedTime = DateTime.Now,
                                userDeviceId  = userDevice.id,
                                expiryTime    = DateTime.Now.AddSeconds(TokenExpiryTime),
                                token         = GeneratedToken,
                            };
                            ctx.userTokens.Add(userToken);
                            ctx.SaveChanges();
                        }
                        else
                        {
                            userToken userDBToken = ctx.userTokens.Where(a => a.userDeviceId == UserDevice.id).FirstOrDefault();
                            if (userDBToken == null)
                            {
                                var userToken = new userToken()
                                {
                                    tokenType     = "AUTHTOKEN",
                                    useCount      = 0,
                                    generatedTime = DateTime.Now,
                                    userDeviceId  = UserDevice.id,
                                    expiryTime    = DateTime.Now.AddSeconds(TokenExpiryTime),
                                    token         = GeneratedToken,
                                };
                                ctx.userTokens.Add(userToken);
                                ctx.SaveChanges();
                            }
                            else
                            {
                                ctx.userTokens.Attach(userDBToken);
                                userDBToken.expiryTime = DateTime.Now.AddSeconds(TokenExpiryTime);
                                ctx.SaveChanges();
                                UserLoginResponse.token = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + userDBToken.token);
                            }
                        }
                    }
                }
                else
                {
                    logger.Error("Some of the properties in userLoginRequest is null or empty");
                    throw new CustomException("All propreties should contains a value", (int)ErrorCode.VALIDATIONFAILED);
                }
            }
            catch (CustomException) { throw; }
            catch (Exception ex)
            {
                logger.Error(MethodBase.GetCurrentMethod().Name + ": exception: " + ex.Message + ", " + ex.InnerException);
                throw new CustomException("SystemError", ex, (int)ErrorCode.PROCEESINGERROR);
            }
            return(UserLoginResponse);
        }
Esempio n. 7
0
        internal EnrollUserResponse EnrollUser(EnrollUserRequest EnrollUserRequest)
        {
            logger.Debug("Recived enroll user request");
            EnrollUserResponse EnrollUserResponse;

            try
            {
                ValidateUserRequest ValidateUserRequest = new ValidateUserRequest()
                {
                    email    = EnrollUserRequest.email,
                    username = EnrollUserRequest.username
                };
                ValidatUser(ValidateUserRequest);

                EnrollUserRequest.username = Decryptor.Decrypt(EnrollUserRequest.username).Split('|')[1];
                EnrollUserRequest.password = Decryptor.Decrypt(EnrollUserRequest.password).Split('|')[1];
                EnrollUserRequest.email    = Decryptor.Decrypt(EnrollUserRequest.email).Split('|')[1];
                EnrollUserRequest.deviceId = Decryptor.Decrypt(EnrollUserRequest.deviceId).Split('|')[1];

                String GeneratedToken = Guid.NewGuid().ToString();
                int    GeneratedCode  = new Random().Next(100000, 999999);

                logger.Debug("Decrypted enroll user request details userName - " + EnrollUserRequest.username +
                             " password - " + EnrollUserRequest.password + " email - " + EnrollUserRequest.email +
                             " deviceId - " + EnrollUserRequest.deviceId);

                //validating details
                if (!String.IsNullOrEmpty(EnrollUserRequest.username) &&
                    !String.IsNullOrEmpty(EnrollUserRequest.password) &&
                    !String.IsNullOrEmpty(EnrollUserRequest.email) &&
                    !String.IsNullOrEmpty(EnrollUserRequest.deviceId))
                {
                    //setting up user details
                    var user = new user()
                    {
                        createdDate     = DateTime.Now,
                        lastUpdatedDate = DateTime.Now,
                        userName        = EnrollUserRequest.username,
                        password        = EnrollUserRequest.password,
                        eMail           = EnrollUserRequest.email,
                        status          = "EMAILVERIFY"
                    };
                    using (var ctx = new PetWhizzEntities())
                    {
                        //saving user
                        ctx.users.Add(user);
                        ctx.SaveChanges();
                        //saving user device
                        var userDevice = new userDevice()
                        {
                            deviceId = EnrollUserRequest.deviceId,
                            // deviceName = EnrollUserRequest.deviceName,
                            userId = user.id,
                        };
                        ctx.userDevices.Add(userDevice);
                        ctx.SaveChanges();
                        //saving user token
                        var userToken = new userToken()
                        {
                            tokenType     = "AUTHTOKEN",
                            useCount      = 0,
                            generatedTime = DateTime.Now,
                            userDeviceId  = userDevice.id,
                            expiryTime    = DateTime.Now.AddSeconds(TokenExpiryTime),
                            token         = GeneratedToken,
                        };
                        ctx.userTokens.Add(userToken);
                        ctx.SaveChanges();
                        //user verification data
                        var userVerificationInfo = new userVerification()
                        {
                            code             = GeneratedCode.ToString(),
                            generatedTime    = DateTime.Now,
                            expiryTime       = DateTime.Now.AddSeconds(VerificationCodeExpiryTime),
                            isValid          = true,
                            userId           = user.id,
                            verificationType = "EMAILVERIFY",
                        };
                        ctx.userVerifications.Add(userVerificationInfo);
                        ctx.SaveChanges();
                    }
                    SendEmailVerification(user.eMail, user.userName, user.id, GeneratedCode.ToString());
                    EnrollUserResponse = new EnrollUserResponse()
                    {
                        token    = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + GeneratedToken),
                        username = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + user.userName),
                        email    = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + user.eMail),
                        status   = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + user.status),
                        userId   = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + user.id)
                    };
                }
                else
                {
                    logger.Error("Some of the properties in EnrollUserRequest is null or empty");
                    throw new CustomException("All propreties should contains a value", (int)ErrorCode.VALIDATIONFAILED);
                }
            }
            catch (CustomException) { throw; }
            catch (Exception ex)
            {
                logger.Error(MethodBase.GetCurrentMethod().Name + ": exception: " + ex.Message + ", " + ex.InnerException);
                throw new CustomException("SystemError", ex, (int)ErrorCode.PROCEESINGERROR);
            }
            return(EnrollUserResponse);
        }