public dynamic Creacion(ProyectoEdit model) { DB = new SlabEntities(); DB.Configuration.LazyLoadingEnabled = true; response = new Response(); #region Estados List <EstadoList> LstEL = new List <EstadoList>(); EstadoList EL = new EstadoList(); LstEL.Add(EL = new EstadoList() { Id = 0, Estado = "En Proceso" }); LstEL.Add(EL = new EstadoList() { Id = 1, Estado = "Finalizado" }); #endregion using (var transaction = DB.Database.BeginTransaction()) { try { Proyecto Pro = DB.Proyecto.Where(x => x.Nombre.ToUpper().Equals(model.Nombre.ToUpper()) && x.Descripcion.ToUpper().Equals(model.Descripcion.ToUpper())).FirstOrDefault(); if (Pro == null) { Pro = new Proyecto() { Nombre = model.Nombre, Descripcion = model.Descripcion, Fecha_Inicio = model.FechaInicio, Fecha_Fin = model.FechaFin, Id_Operario = model.Id_Operario, Estado = model.Estado == 0 ? false : true }; DB.Proyecto.Add(Pro); DB.SaveChanges(); response.Successfully = true; response.Code = 201; response.Message = "Proyecto Insertado con éxito."; response.Result = "Successfully"; transaction.Commit(); } else { response.Successfully = false; response.Code = 200; response.Message = string.Format("Ya existe un Proyecto con ese nombre {0} y con esa descripcion {1}", model.Nombre, model.Descripcion); response.Result = null; } } catch (Exception Exc) { transaction.Rollback(); response.Successfully = false; response.Code = 400; response.Message = "Error In the Method, Error: " + Exc.Message.ToString(); response.Result = "Error in the Method"; } } return(response); }
public IHttpActionResult COUProyect(ProyectoEdit model) { DB = new SlabEntities(); int Id_Usuario; int Id_Rol; TokenGenerator TG = new TokenGenerator(); string result = TG.DecodeTokenAwt(Request.Headers.Authorization.ToString().Replace("Bearer ", "")).Result; if (!string.IsNullOrEmpty(result)) { Id_Usuario = int.Parse(result.Split('|')[0]); Id_Rol = int.Parse(result.Split('|')[2]); Rol R = DB.Rol.Where(x => x.Id == Id_Rol && x.Rol1.ToUpper().Equals("OPERARIO")).FirstOrDefault(); Usuario Us = DB.Usuario.Where(x => x.Id == Id_Usuario).FirstOrDefault(); if (R != null && Us != null) { if (model.Id == 0) { model.Id_Operario = Id_Usuario; return(Ok(PT.Creacion(model))); } else { model.Id_Operario = Id_Usuario; return(Ok(PT.Actualizacion(model))); } } else { return(BadRequest("El usuario logueado no tiene permisos para realizar la acción.")); } } else { return(BadRequest("No se tiene vericidad en la autenticación del usuario.")); } }
public ActionResult Post([FromBody] ProyectoEdit model) { #region Estados List <EstadoList> LstEL = new List <EstadoList>(); EstadoList EL = new EstadoList(); LstEL.Add(EL = new EstadoList() { Id = 0, Estado = "En Proceso" }); LstEL.Add(EL = new EstadoList() { Id = 1, Estado = "Finalizado" }); #endregion int Id_Usuario; int Id_Rol; string result; using (var transaction = Context.Database.BeginTransaction()) { try { if (HttpContext.Request.Headers.TryGetValue("Authorization", out var token)) { result = DecodeTokenAwt(token.ToString().Replace("Bearer ", "")); if (!string.IsNullOrEmpty(result)) { Id_Usuario = int.Parse(result.Split('|')[0]); Id_Rol = int.Parse(result.Split('|')[2]); Rol R = Context.Rol.Where(x => x.Id == Id_Rol && x.RolName.ToUpper().Equals("OPERARIO")).FirstOrDefault(); Usuario us = Context.Usuario.Where(x => x.Id == Id_Usuario).FirstOrDefault(); if (R != null && us != null) { if (model.Id == 0) { Proyecto Pro = Context.Proyecto.Where(x => x.Nombre.ToUpper() == model.Nombre.ToUpper() && x.Descripcion.ToUpper() == model.Descripcion.ToUpper()).FirstOrDefault(); if (Pro == null && LstEL.Where(x => x.Id == model.Estado).FirstOrDefault() != null) { Pro = new Proyecto() { Nombre = model.Nombre, Descripcion = model.Descripcion, Fecha_Inicio = model.FechaInicio, Fecha_Fin = model.FechaFin, Id_Operario = Id_Usuario, Estado = model.Estado == 0 ? false : true }; Context.Proyecto.Add(Pro); Context.SaveChanges(); transaction.Commit(); return(Ok()); } else { //Existe el proyecto return(BadRequest("El proyecto con nombre: " + model.Nombre + " y con descripcion: " + model.Descripcion + " ya existen.")); } } else { bool OkFechas = true; Proyecto PR = Context.Proyecto.Where(x => x.Id == model.Id).FirstOrDefault(); List <Tarea> T = Context.Tarea.Where(x => x.Id_Proyecto == model.Id).ToList(); if (PR != null) { foreach (Tarea tarea in T) { if (tarea.Fecha_Ejecucion > PR.Fecha_Fin) { OkFechas = false; } } if (OkFechas) { PR.Nombre = model.Nombre; PR.Descripcion = model.Descripcion; PR.Fecha_Fin = model.FechaFin; Context.Entry(PR).State = EntityState.Modified; Context.SaveChanges(); transaction.Commit(); return(Ok()); } else { //Hay tareas pendientes return(BadRequest("Hay tareas que se ejecutan despues de la fecha fin del proyecto, revise la informacion.")); } } else { //Proyecto no existe return(BadRequest("No se logro validar el proyecto a actualizar.")); } } } else { //Solo operarios pueden crear proyectos return(BadRequest("Recuerde que solo usuarios con rol Operario pueden realizar esta accion.")); } } else { //no se pudo verificar el token return(BadRequest("No se logro validar la autenticidad del token enviado.")); } } else { //No se verifico el token return(BadRequest("No se logro validar la autenticidad del token enviado.")); } } catch (Exception Exc) { transaction.Rollback(); return(BadRequest("Error al Crear/Actualizar el proyecto. Error: " + Exc.Message.ToString())); } } }
public dynamic Actualizacion(ProyectoEdit model) { bool OkFechas = true; DB = new SlabEntities(); DB.Configuration.LazyLoadingEnabled = true; response = new Response(); using (var transaction = DB.Database.BeginTransaction()) { try { Proyecto PR = DB.Proyecto.Where(x => x.Id == model.Id).FirstOrDefault(); List <Tarea> T = DB.Tarea.Where(x => x.Id_Proyecto == model.Id).ToList(); if (PR != null) { foreach (Tarea tarea in T) { if (tarea.Fecha_Ejecucion > PR.Fecha_Fin) { OkFechas = false; } } if (OkFechas) { PR.Nombre = model.Nombre; PR.Descripcion = model.Descripcion; PR.Fecha_Fin = model.FechaFin; DB.Entry(PR).State = EntityState.Modified; DB.SaveChanges(); response.Successfully = true; response.Code = 200; response.Message = "Actualización de datos realizada con éxito."; response.Result = "Successfully"; transaction.Commit(); } else { response.Successfully = false; response.Code = 200; response.Message = "La fecha final del proyecto no puede ser anterior a las tareas asignadas a este."; response.Result = null; } } else { response.Successfully = false; response.Code = 200; response.Message = "No se logró validar el Proyecto."; response.Result = null; } } catch (Exception Ex) { response.Successfully = false; response.Code = 500; response.Message = Ex.Message.ToString(); response.Result = null; } } return(response); }