public void EliminarModuloCurso(DeleteModuloCursoInputParams inputParams)
 {
     using (ModuloCursoContext db = new ModuloCursoContext())
     {
         try
         {
             db.eliminarModuloCurso.CallStoredProc(inputParams);
         }
         catch (Exception ex)
         {
             //TODO:: keep error in logger
         }
     }
 }
        public IHttpActionResult Put([FromBody] ModuloDTO moduloDTO)
        {
            string message = "Un error ocurrio mientras se actualizaba el modulo: ";
            if (!ModelState.IsValid)
            {
                message += "Modulo ModelState no es valido.";
                return BadRequest(ModelState);
            }

            //string[] moduloDTOToSave = moduloDTO.Cursos.Distinct().ToArray();

            using (var db = new SIGAEntities())
            {
                try
                {
                    Modulo modulo = db.Modulo.First(m => m.ModId == moduloDTO.ModId);
                    modulo.ModNivelId = (int)db.ModuloNivel.Where(mn => mn.ModNivelNombre == moduloDTO.ModNivel).Select(id => id.ModNivelId).FirstOrDefault();
                    modulo.ModCatId = (int)db.ModuloCategoria.Where(mn => mn.ModCatNombre == moduloDTO.ModCategroria).Select(id => id.ModCatId).FirstOrDefault();
                    modulo.ModNombre = moduloDTO.ModNombre;
                    modulo.ModNumHoras = moduloDTO.ModNumHoras;
                    modulo.ModNumMes = moduloDTO.ModNumMes;
                    modulo.ModNumCursos = moduloDTO.ModNumCursos;

                    if (moduloDTO.Cursos.Count() > 0)
                    {

                        DeleteModuloCursoInputParams deleteModuloCursoInputParams = new DeleteModuloCursoInputParams()
                        {
                            ModId = moduloDTO.ModId
                        };

                        ModuloCursoAllSpProcess ModuloCursoAllSPPRocess = new ModuloCursoAllSpProcess();
                        ModuloCursoAllSPPRocess.EliminarModuloCurso(deleteModuloCursoInputParams);

                        foreach (var moduloCursoItem in moduloDTO.Cursos)
                        {
                            if (!String.IsNullOrEmpty(moduloCursoItem.CurName))
                            {
                                var cursoFound = db.Curso.Where(c => c.CurName == moduloCursoItem.CurName).FirstOrDefault();

                                Curso curso = new Curso();
                                if (cursoFound == null)
                                {
                                    curso.CurName = moduloCursoItem.CurName;
                                    curso.CurNumHoras = moduloCursoItem.CurNumHoras;
                                    curso.CurPrecio = moduloCursoItem.CurPrecio;
                                    db.Curso.Add(curso);
                                    db.SaveChanges();
                                }

                                ModuloCurso moduloCurso = new ModuloCurso();
                                moduloCurso.MCFechaRegistro = DateTime.UtcNow;
                                moduloCurso.ModId = modulo.ModId;
                                moduloCurso.CurId = curso.CurId == 0 ? cursoFound.CurId : curso.CurId;

                                db.ModuloCurso.Add(moduloCurso);

                            }
                        }
                    }

                    db.SaveChanges();
                }
                catch (DbUpdateConcurrencyException ex)
                {
                    if (!ModuloExists(moduloDTO.ModId))
                    {
                        message = "An error ocurred while updating event: No event found with requested event id = " + moduloDTO.ModId.ToString();
                        throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, message + " " + ex));
                    }
                    else
                    {
                        message = "Un error ocurrio mientras se actualizaba el modulo " + ex;
                        throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.BadRequest, message));
                    }
                }
            }

            return StatusCode(HttpStatusCode.NoContent);
        }