public async Task <dynamic> CheckInVehicle(CheckInData checkIn)
        {
            var ticket = await _ticketRepository.Query().SingleOrDefaultAsync(c => c.TicketType == checkIn.TicketType);

            if (ticket == null)
            {
                return(null);
            }
            var lastLotNumber = await _lotRepository.Query().Where(l => l.Vehicle.Ticket == ticket)
                                .Select(l => l.LotPosition).OrderByDescending(c => c).Take(1)
                                .FirstOrDefaultAsync();

            var lotRange = await _lotRangeRepository.Query().SingleOrDefaultAsync(lr => lr.TicketId == ticket.Id);

            if (!IsAvailableLot(ticket, lastLotNumber, lotRange?.MaxRange))
            {
                return(null);
            }
            var dimensionData = checkIn.VehicleDimensionData;

            if (!VehicleDimensionValidator.Validate(dimensionData, ticket))
            {
                var alternativeTickets = await _ticketRepository.Query().Where(t => (t.MaxHeight > dimensionData.Height &&
                                                                                     t.MaxWidth > dimensionData.Width &&
                                                                                     t.MaxLength > dimensionData.Length) || t.TicketType == TicketType.Vip).ToListAsync();

                var result = new { ChosenTicket = ticket, alternativeTickets };
                return(result);
            }

            var person = await _peopleRepository.Query()
                         .SingleOrDefaultAsync(p => p.PersonTz == checkIn.PersonData.PersonId);

            if (person == null)
            {
                person = MapPersonEntity(checkIn.PersonData);
                await _peopleRepository.InsertAsync(person);
            }

            var vehicle = await MapVehicleEntity(checkIn);

            vehicle.PersonId = person.Id;
            await _vehicleRepository.InsertAsync(vehicle);

            int lotPosition = lastLotNumber == 0 && lotRange != null ? lotRange.MinRange
                            : lastLotNumber + 1;
            Lot lot = new Lot
            {
                Vehicle     = vehicle,
                CheckIn     = DateTime.UtcNow,
                LotPosition = lotPosition
            };
            await _lotRepository.InsertAsync(lot);

            return(StatusCodes.Status202Accepted);
        }
예제 #2
0
        /// <summary>
        /// 簽到
        /// </summary>
        /// <param name="actId">活動id</param>
        /// <param name="userId">使用者id</param>
        /// <param name="today">時間</param>
        /// <returns></returns>
        internal void CheckIn(string actId, string userId, string today)
        {
            var data = new CheckInData();

            data.userId       = userId;
            data.checkIn_data = today;
            data.check_or_not = true;

            _db.GetCollection <CheckInData>($"CheckIn_{actId}").InsertOne(data);
        }
 public IHttpActionResult GetCheckInsRealizados(int PeriodoId, int UsuarioId)
 {
     try
     {
         return(Json(new { Status = 1, Datos = CheckInData.GetCheckInsRealizados(PeriodoId, UsuarioId), Error = "", StackTrace = "" }));
     }
     catch (HttpResponseException ex)
     {
         return(Json(new { Status = 0, Datos = "", Error = ex.Message, StackTrace = ex.StackTrace }));
     }
 }
 public IHttpActionResult PostCheckIns(Object checks)
 {
     try
     {
         var list = JsonConvert.DeserializeObject <List <LecturaCertificado> >(checks.ToString());
         return(Json(new { Status = 1, Datos = CheckInData.PostCheckIns(list), Error = "", StackTrace = "" }));
     }
     catch (HttpResponseException ex)
     {
         return(Json(new { Status = 0, Datos = "", Error = ex.Message, StackTrace = ex.StackTrace }));
     }
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="checkInData"></param>
        /// <returns></returns>
        private async Task <Vehicle> MapVehicleEntity(CheckInData checkInData)
        {
            var resultVehicle = new Vehicle
            {
                Ticket        = await _ticketRepository.Query().SingleOrDefaultAsync(c => c.Name == checkInData.TicketType.ToString()),
                VehicleHeight = checkInData.VehicleDimensionData.Height.GetValueOrDefault(),
                VehicleWidth  = checkInData.VehicleDimensionData.Width.GetValueOrDefault(),
                VehicleLength = checkInData.VehicleDimensionData.Length.GetValueOrDefault(),
                VehicleType   = await _vehicleTypeRepository.Query()
                                .SingleOrDefaultAsync(vt => vt.Name == checkInData.VehicleType.ToString())
            };

            return(resultVehicle);
        }
        public CheckInResult CheckIn(CheckInData data)
        {
            try
            {
                if (!data.Authenticate())
                {
                    return new CheckInResult()
                           {
                               Status = CheckInStatus.InvalidCredentials
                           }
                }
                ;

                return(data.Verify());
            }
            catch (Exception error)
            {
                Error.Write(error);
                throw;
            }
        }
        public async Task <IActionResult> CheckInVehicle([FromBody] CheckInData checkIn)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            try
            {
                var result = await _parkingService.CheckInVehicle(checkIn);

                if (result != null)
                {
                    return(Ok(result));
                }
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }

            return(BadRequest());
        }
예제 #8
0
        public async Task ExecuteRefreshCommand()
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;
            try
            {
                CheckInData.Clear();

                var dataPoints = new List <DataPoint>();
                var newMembers = await dataService.GetNewMembersForGroup(groupId);

                var rsvps = await dataService.GetRSVPsForGroup(groupId);

                foreach (var member in newMembers)
                {
                    var data = dataPoints.FirstOrDefault(d => d.Time == member.EventDate);
                    if (data == null)
                    {
                        data = new DataPoint
                        {
                            Time = member.EventDate,
                            Date = FromUnixTime(member.EventDate).ToString("MM/dd/yy")
                        };
                        dataPoints.Add(data);
                    }

                    data.Guests++;
                }

                foreach (var member in rsvps)
                {
                    var data = dataPoints.FirstOrDefault(d => d.Time == member.EventDate);
                    if (data == null)
                    {
                        data = new DataPoint
                        {
                            Time = member.EventDate,
                            Date = FromUnixTime(member.EventDate).ToString("MM/dd/yy")
                        };
                        dataPoints.Add(data);
                    }

                    data.CheckIns++;
                }


                foreach (var item in dataPoints.OrderBy(s => s.Time))
                {
                    CheckInData.Add(item);
                }

                if (ShowPopUps)
                {
                    if (CheckInData.Count == 0)
                    {
                        messageDialog
                        .SendMessage("There is no data for this group, please check-in a few members first to a meetup.",
                                     "No Statistics");
                    }
                }
            }
            catch (Exception ex)
            {
                if (Settings.Insights)
                {
                    Xamarin.Insights.Report(ex);
                }
            }
            finally
            {
                IsBusy = false;
            }
        }
예제 #9
0
        public void Delete(int id)
        {
            CheckInData data = new CheckInData();

            data.DeleteCheckIn(id);
        }
예제 #10
0
        public void Put(int id, CheckInModel checkIn)
        {
            CheckInData data = new CheckInData();

            data.UpdateCheckIn(checkIn);
        }
예제 #11
0
        public void Post(CheckInModel checkIn)
        {
            CheckInData data = new CheckInData();

            data.SaveCheckIn(checkIn);
        }
예제 #12
0
        public int PostForCheckInID(CheckInModel checkIn)
        {
            CheckInData data = new CheckInData();

            return(data.GetCheckInID(checkIn));
        }
예제 #13
0
        public CheckInModel PostForCheckIn(ClientInfo cInfo)
        {
            CheckInData data = new CheckInData();

            return(data.GetCheckIn(cInfo));
        }
예제 #14
0
        public List <CheckInModel> Get()
        {
            CheckInData data = new CheckInData();

            return(data.GetCheckIns());
        }