예제 #1
0
 public GetLastestRideBookResponseModel GetRideBook(GetLastestRideBookRequestModel model)
 {
     try
     {
         var response = Post(model, GetRideBookUrl);
         //add fake object
         return(new GetLastestRideBookResponseModel
         {
             driver_name = "Driver name",
             car_make = "Ford",
             car_model = "F-16",
             car_color = "Silver",
             car_license = "GT117",
             time_eta = 30,
             pickup_location = "Home",
             time_pickup = DateTime.UtcNow,
             destination_location = "Work"
         });
         //if (string.IsNullOrEmpty(response.Content))
         //{
         //    return null;
         //}
         //return JsonConvert.DeserializeObject<GetLastestRideBookResponseModel>(response.Content);
     }
     catch (Exception ex)
     {
         LogError("There is error while call company signup api: " + ex.Message, ex);
         return(null);
     }
 }
        public async Task <IHttpActionResult> ActiveSos(ActiveSosModel model)
        {
            //validate model
            if (!ModelState.IsValid)
            {
                foreach (var key in ModelState.Keys.Where(key => ModelState[key].Errors.Count > 0))
                {
                    return(BadRequest(ModelState[key].Errors[0].ErrorMessage));
                }
            }
            //find safety settings
            var safetySetting = _safetySettingService.GetByYayYoId(model.YayYoId);

            try
            {
                if (safetySetting == null)
                {
                    return(BadRequest("User does not exist"));
                }
                //update safety status
                safetySetting.Active       = true;
                safetySetting.UpdatedOnUtc = DateTime.UtcNow;
                await _safetySettingService.UpdateAsync(safetySetting);

                //create new SOS ID
                var logSos = new LogSos
                {
                    YayYoId         = model.YayYoId,
                    SafetySettingId = safetySetting.Id
                };

                await _logSosService.CreateAsync(logSos);

                //get ride book info from YayYo
                var rideBookRequest = new GetLastestRideBookRequestModel {
                    yayYo_id = model.YayYoId
                };
                var rideBookReponse = _yayYoService.GetRideBook(rideBookRequest);
                if (rideBookReponse == null)
                {
                    return(BadRequest("Error when get GetRideBook info"));
                }

                //add ride info to ride Information
                var rideBook = new LogRideInformation
                {
                    DriverName          = rideBookReponse.driver_name,
                    CarMake             = rideBookReponse.car_make,
                    CarModel            = rideBookReponse.car_model,
                    CarColor            = rideBookReponse.car_color,
                    CarLicense          = rideBookReponse.car_license,
                    YayYoId             = model.YayYoId,
                    LocationPickup      = rideBookReponse.pickup_location,
                    TimeEta             = rideBookReponse.time_eta,
                    TimePickup          = rideBookReponse.time_pickup,
                    LocationDestination = rideBookReponse.destination_location,
                    LogSosId            = logSos.Id
                };
                await _rideInformationService.CreateAsync(rideBook);

                //add SosGeolocation info
                var location = new LogSosGeolocation
                {
                    LogSosId = logSos.Id,
                    Location = model.GeoLocation
                };
                await _sosGeolocationService.CreateAsync(location);

                //send SMS
                var contacts = await _contactService.GetBySafetySettingIdAsync(safetySetting.Id);

                foreach (var contact in contacts)
                {
                    var contactInfo = new SmsRequestModel
                    {
                        FirstName           = safetySetting.FirstName,
                        RiderPickupLocation = rideBook.LocationPickup,
                        DestinationAddress  = rideBook.LocationDestination,
                        RideScheduledTime   = rideBook.TimePickup ?? DateTime.MinValue,
                        GeolocationAddress  = model.GeoLocation,
                        ContactPhoneNumber  = contact.Phone
                    };
                    _yayYoService.SendSms(contactInfo);
                }
                return(Ok());
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }