Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="disk"></param>
        /// <returns>
        /// Have late charge return 1
        /// Not have late charge return 0
        /// error return 1
        /// exception return 2
        /// </returns>
        public int ReturnDisk(Disk disk, DateTime dateReturn)
        {
            if (disk != null)
            {
                AddLateCharge      addLateCharge = new AddLateCharge();
                RentalRecordDetail detailLatest  = detailRepository.GetLatest(disk.DiskID);
                RentalRecord       rentalRecord  = recordRepository.Get(detailLatest.RentalRecordID);

                if (detailLatest != null)
                {
                    if (dateReturn > detailLatest.DateReturn.Date)
                    {
                        int result = addLateCharge.Add(disk.DiskID, dateReturn);
                        if (result >= 0)
                        {
                            return(1);
                        }
                        else
                        {
                            return(-1);
                        }
                    }
                    else if (dateReturn < rentalRecord.DateRental)
                    {
                        return(3);
                    }
                    else
                    {
                        using (TransactionScope transaction = new TransactionScope())
                        {
                            try
                            {
                                detailLatest.DateReturnActual = dateReturn;
                                detailRepository.Update(detailLatest);
                                diskRepository.ModifyStatus(disk, StatusOfDisk.ON_SHELF);
                                //reservationRepository.AddReservationReturnDisk(disk.DiskID);
                                transaction.Complete();
                                return(0);
                            }
                            catch
                            {
                                transaction.Dispose();
                                return(-2);
                            }
                        }
                    }
                }
            }
            return(-1);
        }
Exemplo n.º 2
0
 /// <summary>
 /// Initialize RentalRecordDetail with each disk
 /// Calculate the date return, get the price information of each disk.
 /// </summary>
 /// <param name="disks"></param>
 /// <returns>List<RentalRecordDetail></returns>
 public List <RentalRecordDetail> Initialize(List <Disk> disks)
 {
     if (disks != null)
     {
         List <RentalRecordDetail> lstRentalRecordDetail = new List <RentalRecordDetail>();
         foreach (Disk disk in disks)
         {
             RentalRecordDetail rentalRecordDetail = new RentalRecordDetail();
             rentalRecordDetail.DiskID      = disk.DiskID;
             rentalRecordDetail.DateReturn  = DateTime.Now.AddDays(disk.TitleDisk.TypeDisk.Period);
             rentalRecordDetail.PriceRental = disk.TitleDisk.TypeDisk.Cost;
             lstRentalRecordDetail.Add(rentalRecordDetail);
         }
         return(lstRentalRecordDetail);
     }
     return(null);
 }
Exemplo n.º 3
0
 /// <summary>
 /// Modify list RentalRecordDetail exist
 /// </summary>
 /// <param name="disks"></param>
 /// <param name="list"></param>
 /// <returns>List<RentalRecordDetail></returns>
 public List <RentalRecordDetail> Modify(List <Disk> disks, List <RentalRecordDetail> list)
 {
     if (disks != null && list != null)
     {
         foreach (Disk disk in disks)
         {
             if (!ContainsDisk(list, disk))
             {
                 RentalRecordDetail rentalRecordDetail = new RentalRecordDetail();
                 rentalRecordDetail.DiskID      = disk.DiskID;
                 rentalRecordDetail.DateReturn  = DateTime.Now.AddDays(disk.TitleDisk.TypeDisk.Period);
                 rentalRecordDetail.PriceRental = disk.TitleDisk.TypeDisk.Cost;
                 list.Add(rentalRecordDetail);
             }
         }
     }
     return(list);
 }
Exemplo n.º 4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="diskId"></param>
        /// <returns>
        /// Have late charge and add success return 1
        /// Have late charge and add fail return -1
        /// Not have late charge return 0
        /// Order return -2
        /// </returns>
        public int Add(int diskId, DateTime DateReturn)
        {
            //Check status disk
            DiskRepository diskRepository = new DiskRepository(new DBVRContext());
            Disk           disk           = diskRepository.Get(diskId);

            if (disk != null)
            {
                if (disk.Status.Equals(StatusOfDisk.RENTED))
                {
                    RentalRecordDetail detail = detailRepository.GetLatest(diskId);
                    if (detail != null)
                    {
                        using (TransactionScope transaction = new TransactionScope())
                        {
                            try
                            {
                                detail.DateReturnActual = DateReturn;
                                detail.LateCharge       = disk.TitleDisk.TypeDisk.LateCharge;
                                detailRepository.Update(detail);
                                diskRepository.ModifyStatus(disk, StatusOfDisk.ON_SHELF);
                                transaction.Complete();
                                return(1);
                            }
                            catch
                            {
                                transaction.Dispose();
                                return(0);
                            }
                        }
                    }
                    return(-1);
                }
            }
            return(-2);
        }
Exemplo n.º 5
0
 public void  UpdateLateCharge(RentalRecordDetail detail)
 {
     detailRepository.UpdateLateCharge(detail);
 }