[HttpGet("{id}")]                                                       //Read
        public IActionResult GetAddress(int Id)
        {
            try
            {
                var Address = _AddressRepo.Read(Id);
                if (Address.Count == 1)
                {
                    return(StatusCode(StatusCodes.Status302Found, Address));
                }
                else if (Address.Count < 1)
                {
                    return(StatusCode(StatusCodes.Status204NoContent));
                }
                else if (Address.Count > 1)
                {
                    return(StatusCode(StatusCodes.Status207MultiStatus));
                }
                else
                {
                    return(StatusCode(StatusCodes.Status400BadRequest));
                }
            }
            catch (Helper.RepoException ex)
            {
                switch (ex.Type)
                {
                case EnumResultTypes.INVALIDARGUMENT:
                    return(StatusCode(StatusCodes.Status400BadRequest));

                case EnumResultTypes.NOTFOUND:
                    return(StatusCode(StatusCodes.Status204NoContent));

                case EnumResultTypes.SQLERROR:
                    return(StatusCode(StatusCodes.Status408RequestTimeout));

                case EnumResultTypes.ERROR:
                    return(StatusCode(StatusCodes.Status500InternalServerError));

                default:
                    return(StatusCode(StatusCodes.Status501NotImplemented));
                }
            }
            catch (Exception ex)
            {
                var logObj1 = new ExceptionData(ex);
                logObj1.CustomNumber = 123;
                logObj1.CustomText   = "abs";
                logObj1.Add("start_time", DateTime.UtcNow);
                logObj1.Add("myObject", new
                {
                    TappId = 15,
                    Name   = "Sebastian"
                });
                _logger.Error(logObj1);
                return(StatusCode(StatusCodes.Status501NotImplemented));
            }
        }
        [HttpPost()]                                                            //Create
        public IActionResult Add([FromBody] Address value)
        {
            try
            {
                if (value.Id != 0)
                {
                    return(StatusCode(StatusCodes.Status406NotAcceptable));
                }
                List <Address> AddressList = _AddressRepo.Create(value);
                if (AddressList == null)
                {
                    return(StatusCode(StatusCodes.Status206PartialContent));
                }
                else if (AddressList != null)
                {
                    return(StatusCode(StatusCodes.Status201Created, AddressList));
                }
                else
                {
                    return(StatusCode(StatusCodes.Status500InternalServerError));
                }
            }
            catch (Helper.RepoException ex)
            {
                switch (ex.Type)
                {
                case EnumResultTypes.INVALIDARGUMENT:
                    return(StatusCode(StatusCodes.Status400BadRequest));

                case EnumResultTypes.NOTFOUND:
                    return(StatusCode(StatusCodes.Status204NoContent));

                case EnumResultTypes.SQLERROR:
                    return(StatusCode(StatusCodes.Status408RequestTimeout));

                case EnumResultTypes.ERROR:
                    return(StatusCode(StatusCodes.Status500InternalServerError));

                default:
                    return(StatusCode(StatusCodes.Status501NotImplemented));
                }
            }
            catch (Exception ex)
            {
                var logObj2 = new ExceptionData(ex);
                logObj2.CustomNumber = 123;
                logObj2.CustomText   = "abs";
                logObj2.Add("start_time", DateTime.UtcNow);
                logObj2.Add("myObject", new
                {
                    TappId = 15,
                    Name   = "Sebastian"
                });
                _logger.Error(logObj2);
                return(StatusCode(StatusCodes.Status501NotImplemented));
            }
        }
        [HttpGet()]                                                             //Read
        public IActionResult GetAddress()
        {
            try
            {
                throw new ArgumentException();
                var names = _AddressRepo.Read();
                if (names.Count > 0)
                {
                    return(StatusCode(StatusCodes.Status200OK, names));
                }
                else
                {
                    return(StatusCode(StatusCodes.Status204NoContent));
                }
            }
            //catch (Helper.RepoException ex)
            catch (Exception ex)
            {
                var logObj = new ExceptionData(ex);
                logObj.CustomNumber = 1111;
                logObj.CustomText   = "###testException###";
                logObj.Add("start_time", DateTime.UtcNow);
                logObj.Add("myObject", new
                {
                    TappId = 15,
                    Name   = "NoName"
                });
                _logger.Error(logObj);
                return(StatusCode(StatusCodes.Status501NotImplemented));

                /*
                 * switch (exs.Type)
                 * {
                 *  case EnumResultTypes.INVALIDARGUMENT:
                 *      return StatusCode(StatusCodes.Status400BadRequest);
                 *  case EnumResultTypes.NOTFOUND:
                 *      return StatusCode(StatusCodes.Status204NoContent);
                 *  case EnumResultTypes.SQLERROR:
                 *      return StatusCode(StatusCodes.Status408RequestTimeout);
                 *  case EnumResultTypes.ERROR:
                 *      return StatusCode(StatusCodes.Status500InternalServerError);
                 *  default:
                 *      return StatusCode(StatusCodes.Status501NotImplemented);
                 * }*/
            }
            throw new Exception("New exception");
        }
        public IActionResult Delete(int Id)
        {
            var _user  = HttpContext.GetTokenPayload <Auth.Models.LocationUserTokenPayload>();
            var groups = HttpContext.GetUacGroups();

            if (_user.SiteId == "77890-29730")
            {
                Employee result;
                try
                {
                    result = _employeeRepo.Delete(Id);
                }
                catch (RepoException <ResultType> ex)
                {
                    var logObj = new ExceptionData(ex);
                    logObj.CustomNumber = Id;
                    logObj.CustomText   = "Delete";
                    logObj.Add("start_time", DateTime.UtcNow);

                    logObj.Add("Id", Id);
                    _logger.Error(logObj);
                    switch (ex.Type)
                    {
                    case Helper.ResultType.SQLERROR:
                        return(StatusCode(StatusCodes.Status409Conflict));

                    case Helper.ResultType.INVALIDEARGUMENT:
                        return(StatusCode(StatusCodes.Status406NotAcceptable));

                    default:
                        return(StatusCode(StatusCodes.Status400BadRequest));
                    }
                }
                return(StatusCode(StatusCodes.Status200OK, result));
            }
            else
            {
                return(StatusCode(StatusCodes.Status401Unauthorized));
            }
        }
        public IActionResult Update([FromBody] Address address)
        {
            var _user  = HttpContext.GetTokenPayload <Auth.Models.LocationUserTokenPayload>();
            var groups = HttpContext.GetUacGroups();

            if (_user.SiteId == "77890-29730")
            {
                Address result;
                try
                {
                    result = _addressRepo.Update(address);
                }
                catch (Helper.RepoException <Helper.ResultType> ex)
                {
                    var logObj = new ExceptionData(ex);
                    logObj.CustomNumber = address.Id;
                    logObj.CustomText   = "Update";
                    logObj.Add("start_time", DateTime.UtcNow);

                    logObj.Add("Address", address);
                    switch (ex.Type)
                    {
                    case Helper.ResultType.SQLERROR:
                        return(StatusCode(StatusCodes.Status409Conflict));

                    case Helper.ResultType.INVALIDEARGUMENT:
                        return(StatusCode(StatusCodes.Status406NotAcceptable));

                    default:
                        return(StatusCode(StatusCodes.Status400BadRequest));
                    }
                }
                return(StatusCode(StatusCodes.Status200OK, result));
            }
            else
            {
                return(StatusCode(StatusCodes.Status401Unauthorized));
            }
        }