public async Task <IActionResult> PutPark(long id, Park park)
        {
            if (id != park.Id)
            {
                return(BadRequest());
            }

            _context.Entry(park).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ParkExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="db"></param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public async static Task <LoginOrRegisterResult> Login(ParkContext db, string username, string password)
        {
            //判断参数是否为空
            if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password))
            {
                return(new LoginOrRegisterResult()
                {
                    Type = LoginOrRegisterResultType.Empty
                });
            }
            //寻找用户名与密码都匹配的用户
            CarOwner carOwner = await db.CarOwners
                                .FirstOrDefaultAsync(p => p.Username == username && p.Password == CreateMD5(password));

            if (carOwner == null)
            {
                //返回用户名或密码错误
                return(new LoginOrRegisterResult()
                {
                    Type = LoginOrRegisterResultType.Wrong
                });
            }
            carOwner.LastLoginTime   = DateTime.Now;
            db.Entry(carOwner).State = EntityState.Modified;
            //修改并保存用户信息
            await db.SaveChangesAsync();

            return(new LoginOrRegisterResult()
            {
                CarOwner = carOwner
            });
        }
Exemple #3
0
 public ActionResult Edit([Bind(Include = "TicketID,Type,Content,Price")] Ticket ticket)
 {
     if (ModelState.IsValid)
     {
         db.Entry(ticket).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(ticket));
 }
Exemple #4
0
 public ActionResult Edit([Bind(Include = "ID,CampgroundsID,VisitorsID,states,latLong,description,designation,parkCode,directionsInfo,directionsUrl,fullName,url,weatherInfo,name")] Park park)
 {
     if (ModelState.IsValid)
     {
         db.Entry(park).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(park));
 }
        public ActionResult Edit([Bind(Include = "MemberID,Name,Sex,Sex2,Phone,Address,MemberDate")] Member member)
        {
            if (ModelState.IsValid)
            {
                db.Entry(member).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(member));
        }
 public ActionResult Edit([Bind(Include = "OrderID,MemberID,TicketID,Amount,Amount2,Count2")] Order order)
 {
     if (ModelState.IsValid)
     {
         db.Entry(order).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.MemberID = new SelectList(db.Members, "MemberID", "Name", order.MemberID);
     ViewBag.TicketID = new SelectList(db.Tickets, "TicketID", "Type", order.TicketID);
     return(View(order));
 }
Exemple #7
0
 /// <summary>
 /// 设置密码
 /// </summary>
 /// <param name="db"></param>
 /// <param name="carOwner">车主</param>
 /// <param name="password">新密码</param>
 /// <returns></returns>
 public async static Task SetPasswordAsync(ParkContext db, CarOwner carOwner, string password)
 {
     carOwner.Password        = CreateMD5(carOwner.Username + password);
     db.Entry(carOwner).State = EntityState.Modified;
     await db.SaveChangesAsync();
 }
Exemple #8
0
        internal async static Task <LeaveResult> LeaveAsync(ParkContext db, string licensePlate, ParkArea parkArea, DateTime time)
        {
            ParkRecord parkRecord = null;

            try
            {
                LeaveResult leave = new LeaveResult()
                {
                    CanLeave = true
                };
                Car car = await GetCarAsync(db, licensePlate, false);

                if (car == null)
                {
                    //找不到车,就直接放行,省得麻烦
                    return(leave);
                }
                //获取停车记录
                parkRecord = await db.ParkRecords
                             .OrderByDescending(p => p.EnterTime)
                             .FirstOrDefaultAsync(p => p.Car == car);

                if (parkRecord == null)
                {
                    //找不到记录,就直接放行,省得麻烦
                    return(leave);
                }
                leave.ParkRecord = parkRecord;
                //补全进出记录
                parkRecord.LeaveTime       = time;
                db.Entry(parkRecord).State = EntityState.Modified;
                CarOwner owner = car.CarOwner;
                //获取价格策略
                var priceStrategy = parkArea.PriceStrategy;
                if (priceStrategy == null)
                {
                    //免费停车场
                    return(leave);
                }

                switch (owner)
                {
                case CarOwner _ when owner.IsFree:
                    //免费用户
                    break;

                case CarOwner _:
                    if (await IsMonthlyCardValidAsync(db, owner.ID))
                    {
                        //月租用户,放行
                        break;
                    }
                    else
                    {
                        goto needPay;
                    }

                case null:
                    //没有注册
needPay:
                    //非会员或普通用户
                    double price = GetPrice(priceStrategy, parkRecord.EnterTime, time);
                    double balance = owner == null ? 0 : await GetBalanceAsync(db, owner.ID);

                    //计算价格
                    if (balance - price < 0)
                    {
                        //拒绝驶离,要求付费
                        leave.CanLeave  = false;
                        leave.NeedToPay = balance - price;
                        return(leave);
                    }
                    //新增扣费记录
                    TransactionRecord transaction = new TransactionRecord()
                    {
                        Time     = time,
                        Type     = TransactionType.Park,
                        Balance  = balance - price,
                        Value    = -price,
                        CarOwner = owner,
                    };
                    db.TransactionRecords.Add(transaction);
                    parkRecord.TransactionRecord = transaction;    //停车记录绑定交易记录
                    break;
                }
                return(leave);
            }
            finally
            {
                await db.SaveChangesAsync();
            }
        }
Exemple #9
0
 public void Put(int id, [FromBody] State state)
 {
     state.StateId          = id;
     _db.Entry(state).State = EntityState.Modified;
     _db.SaveChanges();
 }
 public void Put(int id, [FromBody] PublicPark publicPark)
 {
     publicPark.PublicParkId     = id;
     _db.Entry(publicPark).State = EntityState.Modified;
     _db.SaveChanges();
 }
 /// <summary>
 /// 设置停车位占用装态
 /// </summary>
 /// <param name="db"></param>
 /// <param name="parkingSpace"></param>
 /// <param name="hasCar"></param>
 /// <returns></returns>
 public static async Task SetParkingSpaceStatus(ParkContext db, ParkingSpace parkingSpace, bool hasCar)
 {
     parkingSpace.HasCar          = hasCar;
     db.Entry(parkingSpace).State = EntityState.Modified;
     await db.SaveChangesAsync();
 }
 public void Put(int id, [FromBody] National national)
 {
     national.NationalId       = id;
     _db.Entry(national).State = EntityState.Modified;
     _db.SaveChanges();
 }