public IActionResult Delete(int id)
        {
            var returnResult = new AddressActionResult(false, new List <string>(), null);

            try
            {
                using (var db = new BTAContext())
                {
                    if (db.Address.Any(x => x.AddressId == id) == false)
                    {
                        returnResult.StatusMessages.Add("Attempted to delete a nonexisting address.");
                    }
                    else
                    {
                        var resultAddress = db.Address.Single(x => x.AddressId == id);
                        db.Address.Remove(resultAddress);
                        db.SaveChanges();
                        returnResult.Success = true;
                        returnResult.Data    = resultAddress;
                        returnResult.StatusMessages.Add("Successfully deleted address.");
                    }
                }
            }
            catch (Exception e)
            {
                returnResult.Success = false;
                returnResult.StatusMessages.Add(e.Message);
                returnResult.Data = null;
            }
            return(returnResult.Success ?
                   StatusCode(StatusCodes.Status200OK, returnResult) :
                   StatusCode(StatusCodes.Status500InternalServerError, returnResult));
        }
        public IActionResult Put([FromBody] Address address)
        {
            string json         = JsonConvert.SerializeObject(address);
            var    returnResult = new AddressActionResult(false, new List <string>(), null);

            if (address != null)
            {
                if (address.AddressId <= 0)
                {
                    returnResult.StatusMessages.Add("Attempting to update an existing address, but an Id is not present.");
                }
                else
                {
                    try
                    {
                        using (var db = new BTAContext())
                        {
                            var resultAddress = db.Address.SingleOrDefault(x => x.AddressId == address.AddressId);
                            if (resultAddress != null)
                            {
                                resultAddress.AddressLine1 = address.AddressLine1;
                                resultAddress.AddressLine2 = address.AddressLine2;
                                resultAddress.AddressLine3 = address.AddressLine3;
                                resultAddress.City         = address.City;
                                resultAddress.State        = address.State;
                                resultAddress.PostalCode   = address.PostalCode;
                                db.SaveChanges();
                                returnResult.Success = true;
                                returnResult.Data    = resultAddress;
                                returnResult.StatusMessages.Add("Successfully updated address.");
                            }
                            else
                            {
                                returnResult.Success = false;
                                returnResult.StatusMessages.Add(string.Format("Unable to locate address for index: {0}", address.AddressId));
                                returnResult.Data = null;
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        returnResult.Success = false;
                        returnResult.StatusMessages.Add(e.Message);
                        returnResult.Data = null;
                    }
                }
            }
            else
            {
                returnResult.Success = false;
                returnResult.StatusMessages.Add("Empty address posted for update.");
                returnResult.Data = null;
            }
            return(returnResult.Success ?
                   StatusCode(StatusCodes.Status200OK, returnResult) :
                   StatusCode(StatusCodes.Status500InternalServerError, returnResult));
        }
        public IActionResult Post([FromBody] Address address)
        {
            string json         = JsonConvert.SerializeObject(address);
            var    returnResult = new AddressActionResult(false, new List <string>(), null);

            if (address != null)
            {
                if (address.AddressId > 0)
                {
                    returnResult.StatusMessages.Add("Attempting to create a new address, but an Id is present.");
                }
                else
                {
                    try
                    {
                        using (var db = new BTAContext())
                        {
                            var resultAddress = db.Address.Add(address);
                            db.SaveChanges();
                            var entity = resultAddress.Entity;
                            if (entity != null)
                            {
                                returnResult.Success = true;
                                returnResult.StatusMessages.Add("Successfully added address.");
                                returnResult.Data = entity;
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        returnResult.Success = false;
                        returnResult.StatusMessages.Add(e.Message);
                        returnResult.Data = null;
                    }
                }
            }
            else
            {
                returnResult.Success = false;
                returnResult.StatusMessages.Add("Empty address posted for add.");
                returnResult.Data = null;
            }
            return(returnResult.Success ?
                   StatusCode(StatusCodes.Status200OK, returnResult) :
                   StatusCode(StatusCodes.Status500InternalServerError, returnResult));
        }