コード例 #1
0
        private BorrowListItem CreateBorrowListItem(BorrowRecord record)
        {
            int    limitDays = 31;
            string getBorrowDayLimitValue = GlobalConfigReader.ReadFromLibraryServiceConfig("BorrowDayLimit", "days");

            if (!string.IsNullOrEmpty(getBorrowDayLimitValue))
            {
                limitDays = Convert.ToInt32(getBorrowDayLimitValue);
            }

            var state = new AdminBookState(record);
            var item  = new BorrowListItem
            {
                BorrowId   = record.BorrowRecordId.ToString(),
                BookId     = record.BookId.ToString(),
                BookNumber = record.Book.BookNumber,
                Title      = record.Book.BookType.Title,
                UserId     = record.UserId.ToString(),
                UserName   = record.User.DisplayName,
                BorrowDate = record.BorrowedDate.ToShortDateString(),
                ReturnDate = record.BorrowedDate.AddDays(limitDays).ToShortDateString(),
                State      = state.State,
                Operation  = state.Operation
            };

            return(item);
        }
コード例 #2
0
        private void RemoveBorrowRecord(BorrowRecord record)
        {
            _db.BorrowRecords.Remove(record);
            SubmitChanges();

            OnBorrowRecordRemoved(record);
        }
コード例 #3
0
        public CustomerBookState(BookLibraryContext db, BorrowRecord borrowRecord, IEnumerable <SubscribeRecord> subscribeRecords)
        {
            int    limitDays = 31;
            string getBorrowDayLimitValue = GlobalConfigReader.ReadFromLibraryServiceConfig("BorrowDayLimit", "days");

            if (!string.IsNullOrEmpty(getBorrowDayLimitValue))
            {
                limitDays = Convert.ToInt32(getBorrowDayLimitValue);
            }

            if (borrowRecord == null)
            {
                throw new ArgumentNullException("borrowRecord");
            }

            var currentUser = Users.Current;

            if (borrowRecord.UserId == currentUser.UserId)
            {
                InitBorrowed(borrowRecord);
            }
            else if (subscribeRecords.Any(r => r.UserId == currentUser.UserId))
            {
                InitSubscribed();
            }
            else
            {
                InitCanSubscribe(borrowRecord.BookId);
            }

            BorrowedBy   = GetUserName(db, borrowRecord.UserId);
            ReturnDate   = borrowRecord.BorrowedDate.AddDays(limitDays).ToShortDateString();
            SubscribedBy = string.Join(", ", subscribeRecords.Select(s => GetUserName(db, s.UserId)));
        }
コード例 #4
0
        public bool BorrowBook(string bookname, string username)
        {
            if (books.Where(book =>
                            book.Name == bookname &&
                            book.Amount > 0).Count() != 1)
            {
                return(false);
            }
            foreach (var book in books)
            {
                if (book.Name == bookname)
                {
                    book.Amount -= 1;
                }
            }
            var record = new BorrowRecord()
            {
                UserName   = username,
                BookName   = bookname,
                BorrowTime = DateTime.Now.ToString(),
            };

            records.Add(record);
            return(true);
        }
コード例 #5
0
        public AdminBookState(BorrowRecord borrowRecord)
        {
            if (borrowRecord == null)
            {
                throw new ArgumentNullException("borrowRecord");
            }

            _borrowRecord = borrowRecord;
        }
コード例 #6
0
        private void AddBorrowRecord(long userId, long bookId)
        {
            var borrowRecord = new BorrowRecord(userId, bookId);

            _db.BorrowRecords.Add(borrowRecord);
            SubmitChanges();

            OnBorrowRecordAdded(borrowRecord);
        }
コード例 #7
0
ファイル: EventHandler.cs プロジェクト: junailan/CQRSDemo
 private void HandleEvent(UserReturnBookEvent domainEvent)
 {
     using (QueryDBEntities _dbContext = new QueryDBEntities())
     {
         BorrowRecord record = _dbContext.BorrowRecord.FirstOrDefault(t => t.UserAggregateRootId == domainEvent.UserAggregateRootId && t.BookAggregateRootId == domainEvent.BookAggregateRootId && !t.Returned);
         record.Returned                = true;
         record.ReturnedDate            = domainEvent.ReturnedDate;
         _dbContext.Entry(record).State = EntityState.Modified;
         _dbContext.SaveChanges();
     }
 }
コード例 #8
0
        public bool addOne(BorrowRecord one)
        {
            string query_string = "INSERT INTO `t_borrow` (`id`, `seriesNum`, `operator`, `status`) VALUES (@id, @seriesNum, @operator, @status)";

            return(MysqlTool.addData(query_string, new MySqlParameter[] {
                new MySqlParameter("@id", one.Id),
                new MySqlParameter("@seriesNum", one.SeriesNum),
                new MySqlParameter("@operator", one.Operator),
                new MySqlParameter("@status", one.Status)
            }));
        }
コード例 #9
0
ファイル: EventHandler.cs プロジェクト: junailan/CQRSDemo
 private void HandleEvent(UserBorrowBookEvent domainEvent)
 {
     using (QueryDBEntities _dbContext = new QueryDBEntities())
     {
         BorrowRecord record = new BorrowRecord
         {
             UserAggregateRootId = domainEvent.UserAggregateRootId,
             BookAggregateRootId = domainEvent.BookAggregateRootId,
             BorrowedDate        = domainEvent.BorrowedDate
         };
         _dbContext.BorrowRecord.Add(record);
         _dbContext.SaveChanges();
     }
 }
コード例 #10
0
        private void SendUserBorrowAcceptedNotify(BorrowRecord record)
        {
            var address = GetUeserEmailAddress(record.UserId);
            var book    = record.BookId.ToString();

            if (record.Book != null)
            {
                book = record.Book.BookType.Title;
            }
            var body = string.Format(
                "The borrowing of book {0} has been accepted, please get the book from Admin ASAP.",
                book);
            var message = Utility.BuildMail(address, "Book Borrow Accepted", body);

            Infrastructures.Instance.Mail.Send(message);
        }
コード例 #11
0
        private void ApplyFirstSubscriberToBorrow(long bookId)
        {
            var firstSubscribe = _subscribeRecordCache.FirstOrDefault(r => r.BookId == bookId);

            if (firstSubscribe == null)
            {
                return;
            }

            _db.SubscribeRecords.Remove(firstSubscribe);
            var borrowRecord = new BorrowRecord(firstSubscribe.UserId, bookId);

            _db.BorrowRecords.Add(borrowRecord);
            SubmitChanges();

            OnBorrowRecordAdded(borrowRecord);
        }
コード例 #12
0
        public ActionResult Post([FromBody] BorrowRecordDto borrowRecordDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            if (!_carRepository.CheckCarExists(borrowRecordDto.CarRego) || !_userRepository.CheckUserExists(borrowRecordDto.UserId))
            {
                return(NotFound());
            }

            int borrowExpInHours = Convert.ToInt32(_configuration["Settings:BorrowExpInHours"]);


            if (!_borrowRecordRepostitory.CheckCarAvailability(borrowRecordDto.CarRego, borrowExpInHours))
            {
                return(BadRequest("The car is not available."));
            }

            var newRecord = new BorrowRecord
            {
                CarRego    = borrowRecordDto.CarRego,
                UserId     = borrowRecordDto.UserId,
                CreateDate = DateTime.Now,
                IsActive   = true,
            };

            try
            {
                _borrowRecordRepostitory.Add(newRecord);
                _borrowRecordRepostitory.AppDbContext.SaveChanges();
            }
            catch (Exception ex)
            {
                var errorMessage = ex.Message;
                // TODO: Log Error
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }

            return(Ok(newRecord));
        }
コード例 #13
0
 private void OnBorrowRecordRemoved(BorrowRecord record)
 {
     ApplyFirstSubscriberToBorrow(record.BookId);
 }
コード例 #14
0
 private void OnBorrowRecordAdded(BorrowRecord borrowRecord)
 {
     SendUserBorrowAcceptedNotify(borrowRecord);
 }
コード例 #15
0
 public bool addOne(BorrowRecord one)
 {
     return(borrowRecordDao.addOne(one));
 }
コード例 #16
0
 private void InitBorrowed(BorrowRecord borrowRecord)
 {
     State     = StateBorrowed;
     Operation = borrowRecord.IsCheckedOut ? null : UserOperationFactory.CreateCancelOperation(borrowRecord.BookId);
 }