Esempio n. 1
0
        public async Task <IActionResult> PutEmployee(int id, Employee employee)
        {
            if (id != employee.Id)
            {
                return(BadRequest());
            }

            _context.Entry(employee).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!EmployeeExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Esempio n. 2
0
        public async Task <IActionResult> PutKpi(int id, Kpi kpi)
        {
            if (id != kpi.Id)
            {
                return(BadRequest());
            }

            //    _context.Entry(kpi).State = EntityState.Modified;

            try
            {
                var oldKpi = _context.Kpis
                             .Include(p => p.Levels)
                             .FirstOrDefault(p => p.Id == id);

                if (oldKpi != null)
                {
                    // Update parent
                    _context.Entry(oldKpi).CurrentValues.SetValues(kpi);

                    // Delete children
                    foreach (var level in oldKpi.Levels.ToList())
                    {
                        if (!kpi.Levels.Any(c => c.Id == level.Id))
                        {
                            _context.Levels.Remove(level);
                        }
                    }

                    // Update and Insert children
                    foreach (var level in kpi.Levels)
                    {
                        var oldLevel = oldKpi.Levels
                                       .Where(c => c.Id == level.Id)
                                       .FirstOrDefault();

                        if (oldLevel != null)
                        {
                            // Update child
                            _context.Entry(oldLevel).CurrentValues.SetValues(level);
                        }
                        else
                        {
                            // Insert child
                            //var newLevel = new Level
                            //{
                            //    Data = level.Data,
                            //    //...
                            //};
                            kpi.Levels.Add(level);
                        }
                    }



                    await _context.SaveChangesAsync();
                }
            }

            catch (DbUpdateConcurrencyException)
            {
                if (!KpiExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }