public Reply Search([FromBody] EmployeeViewModel model)
        {
            Reply oR = new Reply
            {
                Result = 0
            };


            try
            {
                using (TriarioEntities1 db = new TriarioEntities1())
                {
                    List <Search_Employee_Result> SearchEmployee = db.Search_Employee(model.CC).ToList();
                    if (SearchEmployee.Count() > 0)
                    {
                        oR.Data   = SearchEmployee;
                        oR.Result = 1;
                    }
                    else
                    {
                        oR.Message = "Usuario Inexistente";
                    }
                }
            }
            catch (Exception)
            {
                oR.Message = "Error del servidor";
            }

            return(oR);
        }
        public Reply DeleteEmployee([FromUri] int id)
        {
            Reply oR = new Reply
            {
                Result = 0
            };


            try
            {
                using (TriarioEntities1 db = new TriarioEntities1())
                {
                    int CC = id;
                    List <Search_Employee_Result> SearchEmployee = db.Search_Employee(CC).ToList();
                    if (SearchEmployee.Count() > 0)
                    {
                        int DeleteEmployee = db.Delete_Employee(CC);
                        oR.Data    = DeleteEmployee;
                        oR.Result  = 1;
                        oR.Message = "Borrado correctamente";
                    }
                    else
                    {
                        oR.Message = "Usuario no encontrado";
                    }
                }
            }
            catch (Exception)
            {
                oR.Message = "Error De Borrado";
            }

            return(oR);
        }
        public Reply AlterEmployee([FromBody] EmployeeViewModel model)
        {
            Reply oR = new Reply
            {
                Result = 0
            };


            try
            {
                using (TriarioEntities1 db = new TriarioEntities1())
                {
                    List <Search_Employee_Result> SearchEmployee = db.Search_Employee(model.CC).ToList();
                    if (SearchEmployee.Count() > 0)
                    {
                        int AlterEmployee = db.Actualizate_Employee(model.CC, model.FName, model.LName, model.EUser, model.Email, model.Salary, model.Fk_Department);
                        oR.Data   = AlterEmployee;
                        oR.Result = 1;
                    }
                    else
                    {
                        oR.Message = "Usuario no encontrado";
                    }
                }
            }
            catch (Exception)
            {
                oR.Message = "Error De Actualizacion";
            }

            return(oR);
        }
        public Reply Search([FromBody] DepartmentViewModel model)
        {
            Reply oR = new Reply
            {
                Result = 0
            };


            try
            {
                using (TriarioEntities1 db = new TriarioEntities1())
                {
                    List <Search_Department_Result> SearchDeparment = db.Search_Department(model.Id_Department).ToList();
                    if (SearchDeparment.Count() > 0)
                    {
                        oR.Data   = SearchDeparment;
                        oR.Result = 1;
                    }
                    else
                    {
                        oR.Message = "Departamento Inexistente";
                    }
                }
            }
            catch (Exception)
            {
                oR.Message = "Error del servidor";
            }

            return(oR);
        }
        public Reply All()
        {
            Reply oR = new Reply
            {
                Result = 0
            };


            try
            {
                using (TriarioEntities1 db = new TriarioEntities1())
                {
                    List <DepartmentViewModel> lst = (from d in db.Department
                                                      select new DepartmentViewModel
                    {
                        Id_Department = d.Id_Department,
                        Name = d.Name
                    }).ToList();

                    oR.Data   = lst;
                    oR.Result = 1;
                }
            }
            catch (Exception)
            {
                oR.Message = "Error del servidor";
            }

            return(oR);
        }
        public Reply AlterDepartment([FromBody] DepartmentViewModel model)
        {
            Reply oR = new Reply
            {
                Result = 0
            };


            try
            {
                using (TriarioEntities1 db = new TriarioEntities1())
                {
                    List <Search_Department_Result> SearchDepartment = db.Search_Department(model.Id_Department).ToList();
                    if (SearchDepartment.Count() > 0)
                    {
                        int AlterDepartment = db.Actualizate_Department(model.Id_Department, model.Name);
                        oR.Data   = AlterDepartment;
                        oR.Result = 1;
                    }
                    else
                    {
                        oR.Message = "Usuario no encontrado";
                    }
                }
            }
            catch (Exception)
            {
                oR.Message = "Error De Actualizacion";
            }

            return(oR);
        }
        public Reply DeleteDepartment([FromUri] string id)
        {
            Reply oR = new Reply
            {
                Result = 0
            };


            try
            {
                using (TriarioEntities1 db = new TriarioEntities1())
                {
                    string FkDepartment = id;
                    List <Search_Department_Result> SearchDepartment = db.Search_Department(id).ToList();

                    if (SearchDepartment.Count() > 0)
                    {
                        foreach (Employee em in db.Employee)
                        {
                            if (em.Fk_Department == id)
                            {
                                oR.Message = "No s puede borrar por la existencia de usuarios relacionados con el";
                                return(oR);
                            }
                        }
                        int DeleteDepartment = db.Delete_Department(id);
                        oR.Data    = DeleteDepartment;
                        oR.Result  = 1;
                        oR.Message = "Borrado correctamente";
                    }
                    else
                    {
                        oR.Message = "Usuario no encontrado";
                    }
                }
            }
            catch (Exception)
            {
                oR.Message = "Error De Borrado";
            }

            return(oR);
        }
        public Reply GeneralInformation()
        {
            Reply oR = new Reply
            {
                Result = 0
            };


            try
            {
                using (TriarioEntities1 db = new TriarioEntities1())
                {
                    List <JoinViewModel> listJ = new List <JoinViewModel>();
                    foreach (var em in db.Employee)
                    {
                        listJ.Add(new JoinViewModel
                        {
                            CC       = em.CC,
                            FullName = em.FullName,
                            DName    = em.Department.Name,
                            Salary   = (decimal)em.Salary,
                            PSalary  = (decimal)em.Salary * 100 / (decimal)(((Sum_Salary_Department_Result)
                                                                             (db.Sum_Salary_Department(em.Department.Id_Department).ToList().FirstOrDefault())).Sum_Salary)
                        });
                    }

                    oR.Data   = listJ;
                    oR.Result = 1;
                }
            }
            catch (Exception ex)
            {
                oR.Message = ex.Message;
            }

            return(oR);
        }
        public Reply NewEmployee([FromBody] EmployeeViewModel model)
        {
            Reply oR = new Reply
            {
                Result = 0
            };


            try
            {
                using (TriarioEntities1 db = new TriarioEntities1())
                {
                    int NewEmployee = db.Create_Employee(model.CC, model.FName, model.LName, model.EUser, model.Email, model.Salary, model.Fk_Department);
                    oR.Data   = NewEmployee;
                    oR.Result = 1;
                }
            }
            catch (Exception)
            {
                oR.Message = "Error De Creacion";
            }

            return(oR);
        }
        public Reply All()
        {
            Reply oR = new Reply
            {
                Result = 0
            };


            try
            {
                using (TriarioEntities1 db = new TriarioEntities1())
                {
                    List <EmployeeViewModel> lst = (from d in db.Employee
                                                    select new EmployeeViewModel
                    {
                        Id_Num = d.id_num,
                        CC = d.CC,
                        FName = d.FName,
                        LName = d.LName,
                        EUser = d.EUser,
                        Email = d.Email,
                        Salary = (decimal)d.Salary,
                        Fk_Department = d.Fk_Department
                    }).ToList();

                    oR.Data   = lst;
                    oR.Result = 1;
                }
            }
            catch (Exception)
            {
                oR.Message = "Error del servidor";
            }

            return(oR);
        }
        public Reply NewDepartment([FromBody] DepartmentViewModel model)
        {
            Reply oR = new Reply
            {
                Result = 0
            };


            try
            {
                using (TriarioEntities1 db = new TriarioEntities1())
                {
                    int NewDepartment = db.Create_Department(model.Id_Department, model.Name);
                    oR.Data   = NewDepartment;
                    oR.Result = 1;
                }
            }
            catch (Exception)
            {
                oR.Message = "Error De Creacion";
            }

            return(oR);
        }