コード例 #1
0
        public DateTime CreateLog(CarLogBinding binding)
        {
            using (var context = GetMainContext())
            {
                if (string.IsNullOrWhiteSpace(binding.CarValueId))
                {
                    binding.CarValueId = context.Users.Include(x => x.DefaultCar).SingleOrDefault(x => x.Id == UserId).DefaultCar.ValueId;
                }

                var lastEntry = GetLatestLog(binding.CarValueId, new CarLogGetBinding()
                {
                    HasOdometer = true
                });

                if (lastEntry != null && binding.Odometer < lastEntry.Odometer)
                {
                    throw new InvalidRequestException($"Odometer must be {lastEntry.Odometer}km or higher.");
                }

                var entity = binding.ToEntity(context);

                context.CarLogs.Add(entity);
                context.SaveChanges();

                return(entity.Timestamp);
            }
        }
コード例 #2
0
        public async Task <GoogleCloudDialogflowV2WebhookResponse> SetLatestOdometer(GoogleCloudDialogflowV2WebhookRequest request)
        {
            var odometer = (JObject)request.QueryResult.Parameters.FirstOrDefault().Value;
            var carLog   = new CarLogBinding()
            {
                Odometer = (int)odometer["amount"]
            };

            _carHandler.CreateLog(carLog);

            return(new GoogleCloudDialogflowV2WebhookResponse());
        }
コード例 #3
0
        public static CarLog ToEntity(this CarLogBinding b, MainContext context, CarLog entity = null)
        {
            if (entity == null)
            {
                entity = new CarLog();
            }

            entity.CarId     = context.Cars.GetId(b.CarValueId).Value;
            entity.Odometer  = b.Odometer;
            entity.Timestamp = DateTime.Now;

            return(entity);
        }
コード例 #4
0
 public DateTime PostLog([FromBody] CarLogBinding binding, string id)
 {
     binding.CarValueId = id;
     return(_carHandler.CreateLog(binding));
 }