public IHttpActionResult DeactivatePrimaryContact(int deactivateId, int replacementId)
        {
            if (deactivateId <= 0 || replacementId <= 0)
            {
                return(BadRequest());
            }

            var toDeactivate = _unitOfWork.PrimaryContacts.FindSingle(pc => pc.Id == deactivateId);
            var toReplace    = _unitOfWork.PrimaryContacts.FindSingle(pc => pc.Id == replacementId);

            if (Equals(toDeactivate, null) || Equals(toReplace, null))
            {
                return(BadRequest());
            }

            toDeactivate.Active = false;
            toReplace.Active    = true;

            var barcodesToUpdate = _unitOfWork.Glns.Find(gln => gln.ContactId == deactivateId);

            if (barcodesToUpdate.Any())
            {
                barcodesToUpdate.ForEach(bc => bc.ContactId = replacementId);
            }

            toDeactivate.Active = false;

            try
            {
                _unitOfWork.Complete();

                _logger.SuccessfulReplacementServerLog(HttpContext.Current.User, DtoHelper.CreatePrimaryContactDto(toDeactivate), DtoHelper.CreatePrimaryContactDto(toReplace));

                return(Ok(DtoHelper.CreatePrimaryContactDto(toDeactivate)));
            }
            catch (Exception ex)
            {
                _logger.FailedUpdateServerLog(HttpContext.Current.User, ex.Message, ex.InnerException, $"Attempt to deactivate Primary Contact Id: {deactivateId}", $"Supplied replacement Primary Contact Id: {replacementId}");

                return(InternalServerError(ex));
            }
        }