public HttpResponseMessage GetByIdAndUnidade(int id, int unidadeId)
        {
            try
            {
                var movimentacao = _movimentacaoAplicacao.PrimeiroPor(x => x.IdSoftpark.HasValue && x.IdSoftpark.Value == id && x.Unidade.Id == unidadeId);

                if (movimentacao == null)
                {
                    JsonResult.Message = "Movimentação Não Existe";
                    return(Request.CreateResponse(HttpStatusCode.NotFound, JsonResult));
                }

                var movimentacaoVM = new MovimentacaoSoftparkViewModel(movimentacao);

                JsonResult.Status = true;
                JsonResult.Object = movimentacaoVM;
                return(Request.CreateResponse(HttpStatusCode.OK, JsonResult));
            }
            catch (Exception ex)
            {
                JsonResult.Status  = false;
                JsonResult.Message = ex.Message;
                return(Request.CreateResponse(HttpStatusCode.BadRequest, JsonResult));
            }
        }
        public HttpResponseMessage Movements([FromBody] MovimentacaoSoftparkViewModel movimentacaoVM)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    JsonResult.Message = String.Join(" ", ModelState.Values.SelectMany(value => value.Errors).Select(x => x.ErrorMessage));

                    if (string.IsNullOrEmpty(JsonResult.Message))
                    {
                        JsonResult.Message = String.Join(" ", ModelState.Values.SelectMany(value => value.Errors).Select(x => x.Exception.Message));
                    }

                    return(Request.CreateResponse(HttpStatusCode.PreconditionFailed, JsonResult));
                }

                var unidade = _unidadeAplicacao.BuscarPorId(movimentacaoVM.Estacionamento.Id);
                var cliente = _clienteAplicacao.BuscarPorId(movimentacaoVM.ClienteId);
                var usuario = _usuarioServico.BuscarPorId(movimentacaoVM.Operador.Id);

                var validado = Validar(movimentacaoVM.Id, unidade, usuario);
                if (validado != null)
                {
                    return(validado);
                }

                var movimentacao = movimentacaoVM.ToEntity();
                movimentacao.Unidade = unidade;
                movimentacao.Usuario = usuario;
                movimentacao.Cliente = cliente;

                var movimentacaoExistenteComIdSoftpark = movimentacao.IdSoftpark.HasValue ? _movimentacaoAplicacao
                                                         .PrimeiroPor(x => x.IdSoftpark.HasValue &&
                                                                      x.IdSoftpark.Value == movimentacao.IdSoftpark.Value &&
                                                                      x.Unidade != null && movimentacao.Unidade != null &&
                                                                      x.Unidade.Id == movimentacao.Unidade.Id) : null;

                if (movimentacaoExistenteComIdSoftpark != null)
                {
                    movimentacao.Id = movimentacaoExistenteComIdSoftpark.Id;
                }

                if (movimentacao.Usuario != null)
                {
                    movimentacao.Usuario.Unidade        = movimentacao.Unidade;
                    movimentacao.Usuario.TemAcessoAoPDV = true;
                }

                if (movimentacao.MovimentacaoSelo != null && movimentacao.MovimentacaoSelo.Any())
                {
                    RegistrarSelo(movimentacao);
                }

                JsonResult.Status = true;
                _movimentacaoAplicacao.Salvar(movimentacao);
                return(Request.CreateResponse(HttpStatusCode.Created, JsonResult.Message = "Movimentação Cadastrada!"));
            }
            catch (Exception ex)
            {
                JsonResult.Status  = false;
                JsonResult.Message = ex.Message;
                return(Request.CreateResponse(HttpStatusCode.BadRequest, JsonResult));
            }
        }