Exemple #1
0
        public async Task <DataResponse <List <BookModel> > > GetBooks()
        {
            var res = new DataResponse <List <BookModel> >();

            res.Data = new List <BookModel>();
            var query = from book in _DbMan.Books
                        join rent in _DbMan.Rents on book.BookId equals rent.BookId into ps
                        from newRent in ps.Where(Q => Q.ReturnedAt == null).DefaultIfEmpty()
                        select new BookModel
            {
                AuthorName      = book.BookAuthor,
                BookId          = book.BookId,
                BookName        = book.BookName,
                BookGenre       = book.BookGenre,
                BookDescription = book.BookDescription,
                Availability    = newRent == null ? true : newRent.ReturnedAt == null? false : true
                                  //if rent = null, it's available, if rent not null, then check returned at, if returned at null then it's not available
            };
            var books = await query.ToListAsync().ConfigureAwait(false);

            if (books.Count > 0)
            {
                res.Data = books;
                res.SetSuccessStatsus();
            }
            else
            {
                res.SetFailedtatsus();
                res.SetMessage("Books not found", (int)MessageTypeEnum.Warning);
            }
            return(res);
        }
Exemple #2
0
        public async Task <DataResponse <List <RentModel> > > GetRentHistory(int userId)
        {
            var res = new DataResponse <List <RentModel> >();

            res.Data = new List <RentModel>();
            var query = from rent in _DbMan.Rents
                        join book in _DbMan.Books on rent.BookId equals book.BookId
                        join user in _DbMan.Users on rent.UserId equals user.UserId
                        where (user.UserId == userId)
                        select new RentModel
            {
                BookId     = book.BookId,
                BookName   = book.BookName,
                UserName   = user.UserName,
                RentAt     = rent.RentAt.ToShortDateString(),
                ReturnedAt = rent.ReturnedAt.HasValue ? rent.ReturnedAt.GetValueOrDefault(DateTime.Now).ToShortDateString() : "Not Returned Yet",
                Status     = rent.ReturnedAt.HasValue ? true : false,
                RentId     = rent.RentId,
                UserId     = user.UserId,
            };
            var rentalData = await query.ToListAsync().ConfigureAwait(false);

            if (rentalData.Count > 0)
            {
                res.Data = rentalData;
                res.SetSuccessStatsus();
            }
            else
            {
                res.SetFailedtatsus();
                res.SetMessage("Rental data not found", (int)MessageTypeEnum.Warning);
            }
            return(res);
        }
Exemple #3
0
        public async Task <DataResponse <UserModel> > GetUser(int id)
        {
            var res = new DataResponse <UserModel>();

            res.Data = new UserModel();
            var user = await this._DbMan.Users
                       .Where(Q => Q.UserId == id)
                       .Select(Q => new UserModel
            {
                UserId   = Q.UserId,
                UserName = Q.UserName,
                Roles    = Q.UserRole
            })
                       .FirstOrDefaultAsync();

            if (user != null)
            {
                res.Data = user;
                res.SetSuccessStatsus();
            }
            else
            {
                res.SetFailedtatsus();
                res.SetMessage("User not found", (int)MessageTypeEnum.Warning);
            }
            return(res);
        }
Exemple #4
0
        public async Task <DataResponse <List <UserModel> > > GetUsers()
        {
            var res = new DataResponse <List <UserModel> >();

            res.Data = new List <UserModel>();
            var users = await this._DbMan.Users
                        .Select(Q => new UserModel
            {
                UserId   = Q.UserId,
                UserName = Q.UserName,
                Roles    = Q.UserRole
            })
                        .ToListAsync();

            if (users != null)
            {
                res.Data = users;
                res.SetSuccessStatsus();
            }
            else
            {
                res.SetFailedtatsus();
                res.SetMessage("Users not found", (int)MessageTypeEnum.Warning);
            }
            return(res);
        }
Exemple #5
0
        public async Task <DataResponse <AuthModel> > Login(AuthLoginModel auth)
        {
            var res = new DataResponse <AuthModel>();

            res.Data = new AuthModel();
            res.SetSuccessStatsus();

            var user = await this._DbMan.Users
                       .Where(Q => Q.UserName == auth.UserName)
                       .FirstOrDefaultAsync();

            if (user == null)
            {
                res.SetFailedtatsus();
                res.SetMessage(AuthMessage.AuthError, (int)MessageTypeEnum.Error);
                res.Data = null;
                return(res);
            }

            var IsPasswordValid = BCrypt.Net.BCrypt.EnhancedVerify(auth.UserPassword, user.UserPassword, BCrypt.Net.HashType.SHA256);

            if (IsPasswordValid == false)
            {
                res.SetFailedtatsus();
                res.SetMessage(AuthMessage.AuthError, (int)MessageTypeEnum.Error);
                res.Data = null;
                return(res);
            }

            try
            {
                res.Data.Token    = GenerateJwtToken(user);
                res.Data.UserId   = user.UserId;
                res.Data.UserRole = user.UserRole;
            }
            catch (Exception ex)
            {
                var msg = ex.Message; //TODO: Insert Log
                res.SetFailedtatsus();
                res.SetMessage(CommonMessage.CommonErrorMessage, (int)MessageTypeEnum.Exception);
            }

            res.SetMessage(AuthMessage.AuthSuccess, (int)MessageTypeEnum.Success);
            return(res);
        }
Exemple #6
0
        public async Task <DataResponse <BookDetailModel> > UpdateBook(int id, BookDetailModel updatedBook)
        {
            var res = new DataResponse <BookDetailModel>();

            res.Data = new BookDetailModel();
            var book = await this._DbMan.Books.Where(Q => Q.BookId == id).FirstOrDefaultAsync();

            if (book == null)
            {
                res.SetFailedtatsus();
                res.SetMessage("Book not found", (int)MessageTypeEnum.Warning);
                return(res);
            }

            book.BookAuthor      = updatedBook.AuthorName;
            book.BookDescription = updatedBook.BookDescription;
            book.BookGenre       = updatedBook.BookGenre;
            book.BookName        = updatedBook.BookName;
            book.UpdatedAt       = DateTime.Now;
            book.UpdatedBy       = "SYSTEM";

            try
            {
                this._DbMan.Update(book);
                await this._DbMan.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                //ex should be loggeg to logging services
                res.SetMessage(CommonMessage.CommonErrorMessage, (int)MessageTypeEnum.Exception);
                res.SetFailedtatsus();
                return(res);
            }
            res.Data = await this.GetPrivateBook(id);

            res.SetSuccessStatsus();
            res.SetMessage("Buku berhasil diupdate", (int)MessageTypeEnum.Success);

            return(res);
        }
Exemple #7
0
        public async Task <DataResponse <BookDetailModel> > GetBook(int id)
        {
            var res = new DataResponse <BookDetailModel>();

            res.Data = new BookDetailModel();
            var book = await this.GetPrivateBook(id);

            if (book != null)
            {
                res.Data = book;
                res.SetSuccessStatsus();
            }
            else
            {
                res.SetFailedtatsus();
                res.SetMessage("Book not found", (int)MessageTypeEnum.Warning);
            }
            return(res);
        }