/// <summary>
        /// Crea un registro en el historial de cambios de unidades organizacionales de empresas
        /// </summary>
        /// <param name="_param">La unidad a la cual se le va a crear el registro</param>
        /// <param name="_accion">La accion que origina la actualizacion de la informacion</param>
        /// <returns></returns>
        public async Task Create(UnidadOrganizacionalEmpresas _param, string _accion)
        {
            try
            {
                HistorialUnidadesOrganizacionalesEmpresas model = new HistorialUnidadesOrganizacionalesEmpresas
                {
                    nombreActualUnidad        = _param.NombreUnidad,
                    nombreAnteriorUnidad      = _param.oldValueUnidad,
                    nombreAnteriorUnidadPadre = _param.nombrePadre,
                    autor            = _param.autor,
                    contactoId       = _param.ContactoId,
                    empresaId        = _param.EmpresaId,
                    claveUnidad      = _param.ClaveUnidad,
                    accion           = _accion,
                    claveUnidadPadre = _param.padre,
                    comentarios      = _param.comentarios,
                    fecha            = DateTime.Now
                };

                _db.HistorialUnidadesOrganizacionalesEmpresas.Add(model);
                await _db.SaveChangesAsync();
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
        public async Task <HistorialUnidadesOrganizacionalesEmpresas> Create(HistorialUnidadesOrganizacionalesEmpresas model)
        {
            try
            {
                _db.HistorialUnidadesOrganizacionalesEmpresas.Add(model);
                await _db.SaveChangesAsync();

                return(model);
            }catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
        public async Task <IHttpActionResult> Update(HistorialUnidadesOrganizacionalesEmpresas model)
        {
            try
            {
                log.Info(new MDCSet(this.ControllerContext.RouteData));
                await _repo.Update(model);

                return(Ok("Registro actualizado correctamente"));
            }
            catch (Exception e)
            {
                log.Error(new MDCSet(this.ControllerContext.RouteData), e);
                return(InternalServerError(e));
            }
        }
        public async Task <IHttpActionResult> Create(HistorialUnidadesOrganizacionalesEmpresas model)
        {
            try
            {
                log.Info(new MDCSet(this.ControllerContext.RouteData));
                var entity = await _repo.Create(model);

                return(Ok(entity));
            }
            catch (Exception e)
            {
                log.Error(new MDCSet(this.ControllerContext.RouteData), e);

                return(InternalServerError(e));
            }
        }
        public async Task Update(HistorialUnidadesOrganizacionalesEmpresas model)
        {
            try
            {
                var entity = await _db.HistorialUnidadesOrganizacionalesEmpresas.Where(x => x.historialId == model.historialId).FirstOrDefaultAsync();

                if (entity != null)
                {
                    _db.Entry(entity).CurrentValues.SetValues(model);
                    await _db.SaveChangesAsync();
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }