protected void myCustomGridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                if (this.myCustomGridView.EditIndex != -1)
                {
                    var cbl = e.Row.FindControl("employeesList") as CheckBoxList;

                    if (cbl != null)
                    {
                        var jobID = (Int16)this.myCustomGridView.DataKeys[e.Row.RowIndex].Value;

                        var job = new PubsEntities().jobs.Include("employees").FirstOrDefault(x => x.job_id == jobID);

                        if (job != null)
                        {
                            var currentJobEmployees = job.employees;

                            foreach (var item in cbl.Items.OfType<ListItem>())
                            {
                                item.Selected = currentJobEmployees.Any(x => x.emp_id == item.Value);
                            }
                        }
                    }
                }
            }
        }
        protected void fv_ItemUpdating(object sender, FormViewUpdateEventArgs e)
        {
            if (this.fv.CurrentMode == FormViewMode.Edit)
            {
                var employeesListControl = this.fv.FindControl("employeesList") as CheckBoxList;

                if (employeesListControl != null)
                {
                    var ctx = new PubsEntities();
                    var jobID = Convert.ToInt16(this.fv.DataKey["job_id"]);
                    var currentJob = ctx.jobs.First(x => x.job_id == jobID);

                    foreach (var item in employeesListControl.Items.OfType<ListItem>())
                    {
                        var employee = ctx.employees.First(x => x.emp_id == item.Value);

                        if (item.Selected)
                        {
                            employee.job_id = jobID;
                        }
                    }

                    ctx.SaveChanges();
                }
            }
        }
        public ObjectDataSourceProvider()
        {
            //var wrapper = new ContextWrapper(new HttpContextWrapper(HttpContext.Current));
            var wrapper = ServiceLocator.Current.GetInstance<IContextWrapper>();

            this.context = wrapper.GetEFContext();
        }
        public int GetJobsCount()
        {
            var ctx = new PubsEntities();

            var q = ctx.jobs.AsEnumerable();

            return q.Count();
        }
        public void DeleteJob(Int16 ID)
        {
            var ctx = new PubsEntities();

            var job = ctx.jobs.First(x => x.job_id == ID);

            ctx.jobs.Remove(job);

            ctx.SaveChanges();
        }
        protected void employeesList_DataBound(object sender, EventArgs e)
        {
            var ctx = new PubsEntities();
            var employeesCheckBoxListControl = sender as CheckBoxList;
            var jobID = Convert.ToInt16(this.fv.DataKey["job_id"]);
            var currentJob = ctx.jobs.Include("employees").First(x => x.job_id == jobID);

            foreach (var item in employeesCheckBoxListControl.Items.OfType<ListItem>())
            {
                item.Selected = currentJob.employees.Any(x => x.emp_id == item.Value);
            }
        }
        public void UpdateJob(Int16 ID, string Description, byte Minimum, byte Maximum)
        {
            var ctx = new PubsEntities();
            var job = new job();

            job.job_id = ID;
            job.job_desc = Description;
            job.min_lvl = Minimum;
            job.max_lvl = Maximum;

            ctx.jobs.Attach(job);
            ctx.Entry(job).State = System.Data.EntityState.Modified;
            ctx.ChangeTracker.DetectChanges();

            ctx.SaveChanges();
        }
        public IEnumerable<JobDTO> GetJobs(int startRow, int maximumRows)
        {
            var ctx = new PubsEntities();

            var q = ctx.jobs.AsEnumerable();

            q = q.Skip(startRow).Take(maximumRows);

            return q.Select(x => new JobDTO
                {
                    Description = x.job_desc,
                    ID = x.job_id,
                    Maximum = x.max_lvl,
                    Minimum = x.min_lvl
                });
        }
        protected void addNew_Click(object sender, EventArgs e)
        {
            var j = new job
            {
                job_desc = this.description.Text,
                max_lvl = Convert.ToByte(this.maximum.Text),
                min_lvl = Convert.ToByte(this.minimum.Text)
            };

            var ctx = new PubsEntities();

            ctx.jobs.Add(j);

            ctx.SaveChanges();

            this.status.Text = "Job added";
            this.gv.DataBind();
        }
        protected void myCustomGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            var row = this.myCustomGridView.Rows[e.RowIndex];
            var cbl = row.FindControl("employeesList") as CheckBoxList;
            var employees = cbl.Items.OfType<ListItem>().Where(x => x.Selected);
            var ctx = new PubsEntities();
            var jobID = (Int16)e.Keys[0];

            foreach (var item in employees)
            {
                var employee = ctx.employees.First(x => x.emp_id.Equals(item.Value));

                if (!employee.job_id.Equals(jobID))
                {
                    employee.job_id = jobID;
                }
            }

            ctx.ChangeTracker.DetectChanges();
            ctx.SaveChanges();
        }
        protected void dv_DataBound(object sender, EventArgs e)
        {
            if (this.dv.CurrentMode == DetailsViewMode.Edit)
            {
                var employeesListControl = this.dv.FindControl("employeesList") as ListBox;

                if (employeesListControl != null)
                {
                    var ctx = new PubsEntities();
                    var jobID = Convert.ToInt16(this.dv.DataKey[0]);
                    var currentJob = ctx.jobs.Include("employees").FirstOrDefault(x => x.job_id == jobID);

                    if (currentJob != null)
                    {
                        foreach (var item in employeesListControl.Items.OfType<ListItem>())
                        {
                            item.Selected = currentJob.employees.Any(x => x.emp_id == item.Value);
                        }
                    }
                }
            }
        }
        protected void dv_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
        {
            if (this.dv.CurrentMode == DetailsViewMode.Edit)
            {
                var employeesListControl = this.dv.FindControl("employeesList") as ListBox;

                if (employeesListControl != null)
                {
                    var ctx = new PubsEntities();
                    var jobID = Convert.ToInt16(this.dv.DataKey[0]);
                    var currentJob = ctx.jobs.Include("employees").FirstOrDefault(x => x.job_id == jobID);

                    if (currentJob != null)
                    {
                        foreach (var item in employeesListControl.Items.OfType<ListItem>())
                        {
                            var emp = ctx.employees.First(x => x.emp_id == item.Value);

                            if (item.Selected)
                            {
                                emp.job_id = jobID;
                            }
                            else
                            {
                                if (emp.job_id == jobID)
                                {
                                    // here i would normally remove it
                                }
                            }
                        }

                        ctx.SaveChanges();
                    }
                }
            }
        }
        protected void eds_ContextCreating(object sender, EntityDataSourceContextCreatingEventArgs e)
        {
            var pubs = new PubsEntities();

            e.Context = ((IObjectContextAdapter)pubs).ObjectContext;
        }
 public ContextWrapperNoHttpContext()
 {
     this.context = new PubsEntities();
     this.logger = LogManager.GetLogger(this.GetType());
 }