示例#1
0
        public static List <OrderModel> GetListOrders()
        {
            List <BOLOrder> userorsers = RentOrder.GetUserFrom_db();

            try
            {
                List <OrderModel> returneduserorsers = new List <OrderModel>();


                foreach (var item in userorsers)
                {
                    returneduserorsers.Add(new OrderModel
                    {
                        StartDate        = item.StartDate,
                        ReturnDate       = item.ReturnDate,
                        UserName         = RentUser.GetUserName(item.UserID),
                        VehicleNumber    = RentCarsInVehicleInventory.GetVehicleNumber(item.VehiclesID),
                        ActualReturnDate = item.ActualReturnDate
                    });
                }
                return(returneduserorsers);
            }
            catch { }
            return(null);
        }
示例#2
0
        private void IsExistsCode(ISession session, RentOrder rent)
        {
            ICriteria criteria = session.CreateCriteria(typeof(ReqOrder));

            ICriterion criterion = null;

            if (rent.Id != Guid.Empty)
            {
                criterion = Restrictions.Not(Restrictions.IdEq(rent.Id));
                criteria.Add(criterion);
            }

            criterion = Restrictions.Eq("RentOrderCode", rent.RentOrderCode);
            criteria.Add(criterion);
            //统计
            criteria.SetProjection(
                Projections.ProjectionList()
                .Add(Projections.Count("Id"))
                );

            int count = (int)criteria.UniqueResult();

            if (count > 0)
            {
                throw new EasyJob.Tools.Exceptions.RentOrderIsExistsException();//领用主单号已经存在
            }
        }
示例#3
0
        public async Task <IActionResult> Return(int id)
        {
            RentOrder selectedRent = _rentOrders.GetObjectById(id).Result;

            if (selectedRent.CurrentRentedDay == DateTime.Today)
            {
                SetTempData("Error", "You can't return a game on the same day you rent it!");
                return(RedirectToAction("DisplayRents", "Rent"));
            }
            Game returnedGame = _games.GetAllObjects().Result.Where(g => g.Name.Equals(selectedRent.GameRented)).FirstOrDefault();
            var  user         = _users.GetAllObjects().Result.FirstOrDefault(u => u.UserName.Equals(HttpContext.Session.GetString("Username")));

            // DDD operations (kind of)
            returnedGame = returnedGame.ReturnGame();
            selectedRent = await selectedRent.InterruptRentAsync(_broker);

            user = user.RemoveRent(selectedRent);

            // database operations
            await _users.Update(user);

            await _rentOrders.Delete(selectedRent.Id);

            HttpContext.Session.SetString("Balance", user.Balance.ToString());

            return(RedirectToAction("DisplayRents", "Rent"));
        }
示例#4
0
        public IHttpActionResult Delete(string username, int carNumber, DateTime start)
        {
            var RetrievedOrder = GetOrdersFilter.RetrieveOrder(username, carNumber, start);

            RentOrder.deleteFrom_db(RetrievedOrder.UserID, RetrievedOrder.VehiclesID, RetrievedOrder.StartDate);
            return(Ok());
        }
示例#5
0
        static void Main(string[] args)
        {
            /*
             * we can only access "public" class members -
             * because "Customer" is a class from external DLL
             *
             * we can not access class member with the following:
             *  - private
             *  - internal
             *  - protected internal
             *  - protected
             *
             */
            Customer customer = new Customer();

            customer.FullName = "Bob";

            RentOrder carOrder = new RentOrder();

            carOrder.RentItem = new Car {
                Color = "Red"
            };
            carOrder.DayOfRenting = 4;
            carOrder.CustomerInfo = customer;

            Console.WriteLine(carOrder);
        }
        public async Task <IActionResult> Return(int id)
        {
            RentOrder selectedRent = _rentOrders.GetObjectById(id).Result;

            if (selectedRent.CurrentRentedDay == DateTime.Today)
            {
                TempData["Error"] = "You can't return a game on the same day you rent it!";
                return(RedirectToAction("DisplayRents", "Rent"));
            }
            Game returnedGame = _games.GetAllObjects().Result.Where(g => g.Name.Equals(selectedRent.GameRented)).FirstOrDefault();

            returnedGame.Quantity += 1;
            var user = _users.GetAllObjects().Result.FirstOrDefault(u => u.UserName.Equals(HttpContext.Session.GetString("Username")));

            var selectedRentJson = JsonConvert.SerializeObject(selectedRent, new JsonSerializerSettings()
            {
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            }
                                                               );

            await _broker.SendMessage(selectedRentJson, "ReturnToWorker");

            var receivedRent = await _broker.ReceiveMessage("ReturnToWeb");

            user.Balance += receivedRent.TotalPayment;

            await _users.Update(user);

            await _rentOrders.Delete(selectedRent.Id);

            HttpContext.Session.SetString("Balance", user.Balance.ToString());

            return(RedirectToAction("DisplayRents", "Rent"));
        }
示例#7
0
        public HttpResponseMessage RentCar(RentOrder arent)
        {
            int result = 0;

            try
            {
                dbContext.RentOrder.Add(arent);
                dbContext.SaveChanges();
                using (StreamWriter file = new StreamWriter(@"C:\Intel\filewebapi.txt", true))
                {
                    file.WriteLine("Customer Id: " + arent.customer_id);
                    file.WriteLine("Customer Name: " + arent.customer_name);
                    file.WriteLine("Car Id: " + arent.car_id);
                    file.WriteLine("Pick Up Date: " + arent.pick_up_date);
                    file.WriteLine("Drop Off Date: " + arent.drop_off_date);
                    file.WriteLine("//===============================//");
                }
                result = 1;
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                result = 0;
            }
            return(Request.CreateResponse(HttpStatusCode.OK, result));
        }
示例#8
0
 internal static BOLOrder updateOrder(OrderModel order)
 {
     try
     {
         return(RentOrder.SaveUpDataTo_db(RetrieveOrder(order), order.oldStart));
     }
     catch { return(null); }
 }
示例#9
0
 public ActionResult Update(RentOrder rentOrder)
 {
     return(Json(rentOrderOper.Update(rentOrder,
                                      delegate(object sender, ISession session) {
         //判断是否存在领用主单号
         IsExistsCode(session, rentOrder);
     }
                                      )));
 }
示例#10
0
        public IHttpActionResult returnCar([FromBody] OrderModel order)
        {
            BOLOrder RetrievedOrder = GetOrdersFilter.RetrieveOrder(order);
            BOLOrder getOrder       = RentOrder.UpDataTo_db(RetrievedOrder);
            var      a              = (getOrder.ActualReturnDate.Value - getOrder.StartDate.Date).TotalDays;
            int      CarsTypeID     = RentCarsInVehicleInventory.GetCarsTypeID(getOrder.VehiclesID);
            decimal  carPriceForDay = RentTypeOfCars.getDaylyCost(CarsTypeID);

            return(Ok(carPriceForDay));
        }
示例#11
0
        public void RentInsuficientBalance()
        {
            //arrange
            var httpContext = new DefaultHttpContext();
            var tempData    = new TempDataDictionary(httpContext, Mock.Of <ITempDataProvider>());

            tempData["Funds"] = "";
            var controller = new RentController(_rents.Object, _games.Object, _broker, _users.Object)
            {
                TempData = tempData
            };
            var testUser = new User {
                Id = 1, UserName = "******", Balance = 10, RentOrders = new List <RentOrder>()
            };
            var testRent = new RentOrder
            {
                Id         = 1,
                GameRented = "God of War",
                user       = testUser,
                RentPeriod = 5
            };
            var testGame = new Game
            {
                Id       = 1,
                Name     = "God of War",
                Quantity = 5,
            };

            _gameList.Add(testGame);
            RentViewModel rentView = new RentViewModel {
                Rent = testRent, RentedGame = testRent.GameRented
            };

            // inject http session variables
            _mockSession["Balance"]  = testUser.Balance;
            _mockSession["Username"] = testUser.UserName;
            _mockHttpContext.Setup(s => s.Session).Returns(_mockSession);
            controller.ControllerContext.HttpContext = _mockHttpContext.Object;

            _usersList.Add(testUser);
            // act
            var result = controller.Rent(rentView);

            //assert
            Assert.AreEqual(0, testUser.RentOrders.Count);
            Assert.AreEqual(0, _rentList.Count);
            Assert.AreEqual("Not enough funds, payment is 15$!", tempData["Funds"]);
            var viewResult = (ViewResult)result.Result;

            Assert.AreEqual("Index", viewResult.ViewName);
        }
示例#12
0
        public HttpResponseMessage AvailableDate(RentOrder rnt)
        {
            int result = 1;

            //RentOrder usrid = null;
            //RentOrder dateCheck = null;

            try
            {
                //usrid = dbContext.RentOrder.Where(x => x.car_id == rnt.car_id && (x.pick_up_date >= rnt.pick_up_date && x.drop_off_date <= rnt.drop_off_date)).SingleOrDefault();

                var start = rnt.pick_up_date.Value.Date;
                var end   = rnt.drop_off_date.Value.Date;

                foreach (var v in dbContext.RentOrder)
                {
                    if ((v.car_id == rnt.car_id) && ((v.pick_up_date.Value.Date <= start) && (v.drop_off_date.Value.Date >= end)))
                    {
                        result = 0;
                        break;
                    }
                    if (start < DateTime.Now.AddDays(-1) || end < DateTime.Now.AddDays(-1))
                    {
                        result = 2;
                        break;
                    }
                    if (end < start)
                    {
                        result = 3;
                        break;
                    }
                }

                //dateCheck = (from x in dbContext.RentOrder
                //             where ((x.car_id == rnt.car_id) &&
                //             (x.pick_up_date.Value.Date >= start && x.drop_off_date.Value.Date <= end))
                //             select x).SingleOrDefault();

                //    if (dateCheck != null)
                //    { result = 0; }
                //    else
                //    { result = 1; }
            }
            catch (Exception e)
            {
                //Console.WriteLine(e);
                result = 1;
            }
            return(Request.CreateResponse(HttpStatusCode.OK, result));
        }
示例#13
0
        public async Task DisplayRents()
        {
            //Arrange
            _broker = new MessageBroker(new ConnectionFactory()
            {
                Uri = new Uri("amqp://*****:*****@reindeer.rmq.cloudamqp.com/zswjrhxx")
            }.CreateConnection());
            var controller = new RentController(_rents.Object, _games.Object, _broker, _users.Object);
            var testUser   = new User {
                Id = 1, UserName = "******", Balance = 120, RentOrders = new List <RentOrder>()
            };
            var testGame = new Game {
                Id = 1, Name = "God of War", Quantity = 4
            };
            var testRent = new RentOrder
            {
                Id               = 1,
                GameRented       = "God of War",
                user             = testUser,
                CurrentRentedDay = DateTime.Today,
                RentPeriod       = 5
            };

            _mockSession["Balance"]  = testUser.Balance;
            _mockSession["Username"] = testUser.UserName;
            _mockHttpContext.Setup(s => s.Session).Returns(_mockSession);

            controller.ControllerContext.HttpContext = _mockHttpContext.Object;
            _gameList.Add(testGame);
            _usersList.Add(testUser);

            RentViewModel rentView = new RentViewModel {
                Rent = testRent, RentedGame = testGame.Name
            };
            //Act
            var firstRent = controller.Rent(rentView);

            //Assert
            Assert.AreEqual(1, _rentList.Count);
            Assert.AreEqual(1, testUser.RentOrders.Count);
            //verify quantity for the games after rent
            Assert.AreEqual(3, testGame.Quantity);
            // verify expiring dates
            Assert.AreEqual(DateTime.Today.AddDays(5), testRent.ExpiringDate);
            // verify user balance
            Assert.AreEqual(105, testUser.Balance);
            _rents.Verify(m => m.GetAllObjects(), Times.Never);
        }
        /// <summary>
        /// Creates new rentOrder record
        /// </summary>
        /// <param name="rentOrder">new RentOrder entity</param>
        public void CreateRent(RentOrder rentOrder)
        {
            using (var connection = new SqlConnection(_connectionString))
            {
                connection.Open();

                using (var command = new SqlCommand()
                {
                    CommandType = CommandType.Text,
                    Connection = connection,
                    CommandText = CreateRentText
                })
                {
                    command.Parameters.Add(new SqlParameter("@idTool", SqlDbType.Int)
                    {
                        Value = rentOrder.IdTool
                    });
                    command.Parameters.Add(new SqlParameter("@IdCustomer", SqlDbType.Int)
                    {
                        Value = rentOrder.IdCustomer
                    });
                    command.Parameters.Add(new SqlParameter("@IdOperator", SqlDbType.Int)
                    {
                        Value = rentOrder.IdOperator
                    });
                    command.Parameters.Add(new SqlParameter("@DateStart", SqlDbType.DateTime)
                    {
                        Value = rentOrder.DateStart
                    });
                    command.Parameters.Add(new SqlParameter("@DateEnd", SqlDbType.DateTime)
                    {
                        Value = rentOrder.DateEnd
                    });
                    command.Parameters.Add(new SqlParameter("@RentStatus", SqlDbType.Int)
                    {
                        Value = rentOrder.RentStatus
                    });
                    command.Parameters.Add(new SqlParameter("@RentPrice", SqlDbType.Decimal)
                    {
                        Value = rentOrder.RentPrice
                    });

                    command.ExecuteNonQuery();
                }
            }
        }
示例#15
0
        public void ExtendPeriodFailed()
        {
            // arrange
            var httpContext = new DefaultHttpContext();
            var tempData    = new TempDataDictionary(httpContext, Mock.Of <ITempDataProvider>());

            tempData["Error"] = "";
            var controller = new RentController(_rents.Object, _games.Object, _broker, _users.Object)
            {
                TempData = tempData
            };

            var testUser = new User {
                Id = 1, UserName = "******", Balance = 10, RentOrders = new List <RentOrder>()
            };
            var testRent = new RentOrder
            {
                Id               = 1,
                GameRented       = "God of War",
                user             = testUser,
                CurrentRentedDay = DateTime.Today,
                ExpiringDate     = DateTime.Today.AddDays(5),
                RentPeriod       = 5
            };

            testUser.RentOrders.Add(testRent);
            // inject http session variables
            _mockSession["Balance"]  = testUser.Balance;
            _mockSession["Username"] = testUser.UserName;
            _mockHttpContext.Setup(s => s.Session).Returns(_mockSession);
            controller.ControllerContext.HttpContext = _mockHttpContext.Object;

            _usersList.Add(testUser);
            _rentList.Add(testRent);
            // act
            // user initially had 115 balance
            var result = controller.Extend(testRent.Id, 5);

            //assert
            Assert.AreEqual(DateTime.Today.AddDays(5), testRent.ExpiringDate);
            Assert.AreEqual(10, testUser.Balance);
            var viewResult = (RedirectToActionResult)result.Result;

            Assert.AreEqual("DisplayRents", viewResult.ActionName);
            Assert.AreEqual("You don't have enough money to extend it's rent duartion", tempData["Error"]);
        }
示例#16
0
        public static OrderModel PostOrders(OrderModel Order)
        {
            try
            {
                BOLOrder newOrder = new BOLOrder();

                newOrder.StartDate        = Order.StartDate;
                newOrder.ReturnDate       = Order.ReturnDate;
                newOrder.UserID           = RentUser.GetUserid(Order.UserName);
                newOrder.VehiclesID       = RentCarsInVehicleInventory.GetVehicleid(Order.VehicleNumber);
                newOrder.ActualReturnDate = Order.ActualReturnDate;

                if (RentOrder.AddBranchTo_db(newOrder))
                {
                    return(Order);
                }
                return(null);
            }
            catch { return(null); }
        }
示例#17
0
        public void ReturnGame()
        {
            // arrange
            _broker = new MessageBroker(new ConnectionFactory()
            {
                Uri = new Uri("amqp://*****:*****@reindeer.rmq.cloudamqp.com/zswjrhxx")
            }.CreateConnection());
            var controller = new RentController(_rents.Object, _games.Object, _broker, _users.Object);
            var testUser   = new User {
                Id = 1, UserName = "******", Balance = 100, RentOrders = new List <RentOrder>()
            };
            var testRent = new RentOrder {
                Id             = 1, GameRented = "God of War", user = testUser, CurrentRentedDay = DateTime.Today.AddDays(-3)
                , ExpiringDate = DateTime.Today.AddDays(2), RentPeriod = 5
            };

            testUser.RentOrders.Add(testRent);
            var testGame = new Game {
                Id = 1, Name = "God of War", Quantity = 4
            };

            _rentList.Add(testRent);
            _usersList.Add(testUser);
            _gameList.Add(testGame);
            _mockSession["Balance"]  = testUser.Balance;
            _mockSession["Username"] = testUser.UserName;
            _mockHttpContext.Setup(s => s.Session).Returns(_mockSession);
            controller.ControllerContext.HttpContext = _mockHttpContext.Object;
            //act
            var result = controller.Return(testRent.Id);

            Console.WriteLine(testUser.RentOrders.ToList().ToString());

            //assert
            var viewResult = (RedirectToActionResult)result.Result;

            Assert.AreEqual("DisplayRents", viewResult.ActionName);
            Assert.AreEqual(0, testUser.RentOrders.Count); // rent has been removed
            Assert.AreEqual(91, testUser.Balance);
            Assert.AreEqual(5, testGame.Quantity);
        }
示例#18
0
        public void ExtendGamePeriod()
        {
            // arrange
            _broker = new MessageBroker(new ConnectionFactory()
            {
                Uri = new Uri("amqp://*****:*****@reindeer.rmq.cloudamqp.com/zswjrhxx")
            }.CreateConnection());
            var controller = new RentController(_rents.Object, _games.Object, _broker, _users.Object);
            var testUser   = new User {
                Id = 1, UserName = "******", Balance = 100, RentOrders = new List <RentOrder>()
            };
            var testRent = new RentOrder
            {
                Id               = 1,
                GameRented       = "God of War",
                user             = testUser,
                CurrentRentedDay = DateTime.Today,
                ExpiringDate     = DateTime.Today.AddDays(5),
                RentPeriod       = 5
            };

            testUser.RentOrders.Add(testRent);
            // inject http session variables
            _mockSession["Balance"]  = testUser.Balance;
            _mockSession["Username"] = testUser.UserName;
            _mockHttpContext.Setup(s => s.Session).Returns(_mockSession);
            controller.ControllerContext.HttpContext = _mockHttpContext.Object;

            _usersList.Add(testUser);
            _rentList.Add(testRent);
            // act
            // user initially had 115 balance
            var result = controller.Extend(testRent.Id, 5);

            //assert
            Assert.AreEqual(DateTime.Today.AddDays(10), testRent.ExpiringDate);
            Assert.AreEqual(85, testUser.Balance);
            var viewResult = (RedirectToActionResult)result.Result;

            Assert.AreEqual("DisplayRents", viewResult.ActionName);
        }
示例#19
0
 public static List <OrderModel> GetUserOrdesrByUserName(string userName)
 {
     try
     {
         List <OrderModel> orderList = new List <OrderModel>();
         List <BOLOrder>   orders    = RentOrder.GetUsersOrdesrByUserName(userName);
         foreach (var item in orders)
         {
             orderList.Add(new OrderModel
             {
                 StartDate        = item.StartDate,
                 ReturnDate       = item.ReturnDate,
                 UserName         = userName,
                 VehicleNumber    = RentCarsInVehicleInventory.GetVehicleNumber(item.VehiclesID),
                 ActualReturnDate = item.ActualReturnDate
             });
         }
         return(orderList);
     }
     catch { return(null); }
 }
示例#20
0
        public ActionResult SubmitForm(RentOrder rentalOrderEntity, int?keyValue)
        {
            if (!keyValue.HasValue)
            {
                rentalOrderEntity.F_Tenant           = CurrentUser.UserName;
                rentalOrderEntity.F_UserId           = CurrentUser.UserId;
                rentalOrderEntity.F_CreatorTime      = DateTime.Now;
                rentalOrderEntity.F_CreatorUserId    = CurrentUser.UserId;
                rentalOrderEntity.F_LastModifyTime   = DateTime.Now;
                rentalOrderEntity.F_LastModifyUserId = CurrentUser.UserId;
                rentalOrderEntity.F_OrderID          = string.Format("{0:yyyyMMddHHmmssffff}", DateTime.Now);
            }
            else
            {
                rentalOrderEntity.F_LastModifyTime   = DateTime.Now;
                rentalOrderEntity.F_LastModifyUserId = CurrentUser.UserId;
            }

            rentalApp.SubmitForm(rentalOrderEntity, keyValue);
            return(Success("操作成功。"));
        }
        public async Task <IActionResult> Rent(RentOrder rent)
        {
            rent.CurrentRentedDay = DateTime.Today;
            rent.GameRented       = gameRented.Name;

            var rentJson = JsonConvert.SerializeObject(rent);
            await _broker.SendMessage(rentJson, "RentToWorker");

            var rentReceived = _broker.ReceiveMessage("WorkerToRent").Result;

            rent.ExpiringDate = rentReceived.ExpiringDate;
            rent.TotalPayment = rentReceived.TotalPayment;

            var user = _users.GetAllObjects().Result.FirstOrDefault(u => u.UserName.Equals(HttpContext.Session.GetString("Username")));

            user.RentOrders = new Collection <RentOrder>();

            if (user.Balance > rent.TotalPayment && gameRented.Quantity >= 1)
            {
                user.Balance -= rent.TotalPayment;
                // update game quantity
                gameRented.Quantity -= 1;
                await _rentOrders.Insert(rent);

                user.RentOrders.Add(rent);
                await _games.Update(gameRented);

                await _users.Update(user);

                HttpContext.Session.SetString("Balance", Convert.ToString(user.Balance));
                return(RedirectToAction("Index", "Game"));
            }
            else
            {
                TempData["Funds"] = $"Not enough funds, payment is {rent.TotalPayment}$!";
                return(View("Index"));
            }
        }
示例#22
0
        public void ReturnGameSameDayFail()
        {
            //arrange
            var httpContext = new DefaultHttpContext();
            var tempData    = new TempDataDictionary(httpContext, Mock.Of <ITempDataProvider>());

            tempData["Error"] = "";
            var controller = new RentController(_rents.Object, _games.Object, _broker, _users.Object)
            {
                TempData = tempData
            };
            var testUser = new User {
                Id = 1, UserName = "******", Balance = 10, RentOrders = new List <RentOrder>()
            };
            var testRent = new RentOrder
            {
                Id               = 1,
                GameRented       = "God of War",
                user             = testUser,
                RentPeriod       = 5,
                CurrentRentedDay = DateTime.Today,
                TotalPayment     = 15f
            };

            _rentList.Add(testRent);
            _usersList.Add(testUser);
            //act
            var result = controller.Return(testRent.Id);

            //assert
            Assert.AreEqual("You can't return a game on the same day you rent it!", tempData["Error"]);
            var redirectResult = (RedirectToActionResult)result.Result;

            Assert.AreEqual("DisplayRents", redirectResult.ActionName);
            Assert.AreEqual(5, testRent.RentPeriod);
            Assert.AreEqual(15f, testRent.TotalPayment);
        }
示例#23
0
 public ActionResult PlaceOrderForm(RentOrder rentOrderEntity, int?keyValue)
 {
     return(Success("操作成功。"));
 }
示例#24
0
 public void UpdateForm(RentOrder userEntity)
 {
     service.Update(userEntity);
 }
示例#25
0
 public void SubmitForm(RentOrder salverEntity, int?keyValue)
 {
     service.SubmitForm(salverEntity, keyValue);
 }
示例#26
0
 public RentOperations(RentOrder rentOrder)
 {
     _rentOrder = rentOrder;
 }
示例#27
0
 public ActionResult Del(RentOrder rentOrder)
 {
     return(Json(rentOrderOper.Del(rentOrder)));
 }
示例#28
0
        public IHttpActionResult GetOrderByDate(DateTime start, DateTime end)
        {
            List <int> value = RentOrder.GetListOrderByDate(start, end);

            return(Ok(value));
        }
示例#29
0
 public Task <RentOrder> AddOrUpdate([FromBody] RentOrder entity)
 {
     return(_crudService.AddOrUpdate(entity));
 }