private TwiMLResult RegisterDevice(TwilioSmsHookModel hookModel)
        {
            var response          = new MessagingResponse();
            var data              = hookModel.Body.Split(' ');
            var devicePhoneNumber = data[1].Trim();
            var deviceNickName    = data[2].Trim().ToLower();
            var ownerPhoneNumber  = hookModel.From;

            if (_db.Trackers.Any(x => x.DeviceNickName == deviceNickName))
            {
                response.Message("A device with that name is already registered. Please use another one.");
                return(TwiML(response));
            }

            _db.Trackers.Add(new Tracker
            {
                DeviceNickName    = deviceNickName,
                DevicePhoneNumber = devicePhoneNumber,
                OwnerPhoneNumber  = ownerPhoneNumber
            });

            _db.SaveChanges();

            response.Message($"Your device {deviceNickName} with number {devicePhoneNumber} has been successfully registered");
            return(TwiML(response));
        }
        public TwiMLResult Index(TwilioSmsHookModel twilioSmsHookModel)
        {
            var body         = twilioSmsHookModel.Body;
            var receivedFrom = twilioSmsHookModel.From;

            Debug.WriteLine($"Message received {body}");

            try
            {
                if (body.ToLower().Contains("enable"))
                {
                    if (SendDeviceMessage(body))
                    {
                        return(SendMessagingResponse("Theft protection successfully enabled."));
                    }
                    else
                    {
                        return(SendMessagingResponse("We're really sorry, but your device isn't registered in our system."));
                    }
                }
                else if (body.ToLower().Contains("disable"))
                {
                    if (SendDeviceMessage(body))
                    {
                        return(SendMessagingResponse("Theft protection successfully disabled."));
                    }
                    else
                    {
                        return(SendMessagingResponse("We're really sorry, but your device isn't registered in our system."));
                    }
                }
                else if (body.ToLower().Contains("register"))
                {
                    return(RegisterDevice(twilioSmsHookModel));
                }

                var commandReceived = SmsParser.ParseSmsBody(body);
                commandReceived.TrackerId = _db.Trackers.First(x => x.DevicePhoneNumber == receivedFrom).Id;

                return(HandleSmsCommandReceived(commandReceived));
            }
            catch (Exception ex)
            {
                _db.Logs.Add(new Log
                {
                    Error = ex.Message,
                    Time  = DateTime.Now
                });

                return(SendMessagingResponse("I'm sorry, we did not quite catch that."));
            }
        }