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); }
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); }
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); }
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); }
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); }
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); }
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); }