[ProducesResponseType(typeof(DtoError), 500)] //Define the extra HttpStatusCode for Swagger
        public IQueryable <DtoCustomer> GetAll()
        {
            var rtn = new List <DtoCustomer>();

            try
            {
                //throw new Exception("Test");
                using (var custService = new CustomerService(DbContextFactory.Create()))
                {
                    var custDaos = custService.GetAll().ToList();
                    foreach (var custDao in custDaos)
                    {
                        rtn.Add(DtoFactory.Create <Angular2.Mvc.DAL.Models.DAO.Customer, Angular2.Mvc.Core.Models.DTO.DtoCustomer>(custDao));
                    }
                }
                return(rtn.AsQueryable());
            }
            catch (Exception ex)
            {
                var err = new DtoError
                {
                    StatusCode  = 500,
                    ServerError = ex.Message,
                    ClientMsg   = "Please try again..."
                };

                var    errJson = JsonConvert.SerializeObject(err);
                byte[] data    = System.Text.Encoding.UTF8.GetBytes(errJson);
                Response.ContentType = "application/json";
                Response.StatusCode  = (int)HttpStatusCode.InternalServerError;
                Response.Body.WriteAsync(data, 0, data.Length);
                throw;
            }
        }
        private DtoError Retransmissao(Usuario usuario, Empenho objModel, int resource)
        {
            var error = new DtoError();
            var key   = new ChaveCicsmo();

            try
            {
                try
                {
                    if (objModel.TransmitirSiafem && !objModel.TransmitidoSiafem)
                    {
                        TransmitirSiafem(objModel, usuario, resource);
                    }
                }
                catch (Exception ex)
                {
                    error.Siafem = ex.Message;
                }

                try
                {
                    if (objModel.TransmitirSiafisico && !objModel.TransmitidoSiafisico)
                    {
                        TransmitirSiafisico(objModel, usuario, resource);
                    }
                }
                catch (Exception ex)
                {
                    error.Siafem = ex.Message;
                }

                try
                {
                    if (string.IsNullOrWhiteSpace(error.Siafem) && objModel.TransmitirProdesp &&
                        !objModel.TransmitidoProdesp)
                    {
                        TransmitirProdesp(objModel, resource);
                    }
                }
                catch (Exception ex)
                {
                    error.Prodesp = ex.Message;
                }

                if ((objModel.TransmitidoSiafisico || objModel.TransmitidoSiafem) && objModel.TransmitidoProdesp)
                {
                    key = _chave.ObterChave();
                    objModel.StatusDocumento = _prodesp.InserirDoc(objModel, key.Chave, key.Senha, "03");
                }
            }
            catch (Exception ex)
            {
                throw SaveLog(ex, (short?)EnumAcao.Transmitir, resource);
            }
            finally { _chave.LiberarChave(key.Codigo); }

            return(error);
        }
        private DtoError Retransmissao(Usuario usuario, EmpenhoCancelamento objModel, int resource)
        {
            var error = new DtoError();
            var key   = new ChaveCicsmo();

            try
            {
                Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("ERROR EMPENHO CANCELAMENTO - RETRANSMISSAO - 1: OBJMODEL = " + objModel.Id + " - USUARIO = " + usuario + " - RESOURCE = " + resource));
                try
                {
                    if (objModel.TransmitirSiafem && !objModel.TransmitidoSiafem)
                    {
                        TransmitirSiafem(objModel, usuario, resource);
                        Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("ERROR EMPENHO CANCELAMENTO - RETRANSMISSAO - 2"));
                    }
                }
                catch (Exception ex)
                {
                    error.Siafem = ex.Message;
                    Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("ERROR EMPENHO CANCELAMENTO - RETRANSMISSAO - 3: EX = " + ex));
                }

                try
                {
                    if (objModel.TransmitirSiafisico && !objModel.TransmitidoSiafisico)
                    {
                        TransmitirSiafisico(objModel, usuario, resource);
                        Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("ERROR EMPENHO CANCELAMENTO - RETRANSMISSAO - 4"));
                    }
                }
                catch (Exception ex)
                {
                    error.Siafem = ex.Message;
                    Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("ERROR EMPENHO CANCELAMENTO - RETRANSMISSAO - 5: EX = " + ex));
                }

                try
                {
                    if (string.IsNullOrWhiteSpace(error.Siafem) && objModel.TransmitirProdesp && !objModel.TransmitidoProdesp)
                    {
                        TransmitirProdesp(objModel, resource);
                        Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("ERROR EMPENHO CANCELAMENTO - RETRANSMISSAO - 6"));
                    }
                }
                catch (Exception ex)
                {
                    error.Prodesp = ex.Message;
                    Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("ERROR EMPENHO CANCELAMENTO - RETRANSMISSAO - 7: EX = " + ex));
                }

                if ((objModel.TransmitidoSiafisico || objModel.TransmitidoSiafem) && objModel.TransmitidoProdesp)
                {
                    key = _chave.ObterChave();
                    objModel.StatusDocumento = _prodesp.InserirDoc(objModel, key.Chave, key.Senha, "04");
                    Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("ERROR EMPENHO CANCELAMENTO - RETRANSMISSAO - 8"));
                }
            }
            catch (Exception ex)
            {
                throw SaveLog(ex, (short?)EnumAcao.Transmitir, resource);
                Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("ERROR EMPENHO CANCELAMENTO - RETRANSMISSAO - 9: EX = " + ex));
            }
            finally
            {
                _chave.LiberarChave(key.Codigo);
                Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("ERROR EMPENHO CANCELAMENTO - RETRANSMISSAO - 10"));
            }

            return(error);
        }