Exemplo n.º 1
0
        public async Task <IActionResult> Edit(int id, EditConversationTypeViewModel editConversationType)
        {
            if (id != editConversationType.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
//                try
//                {
//                    _context.Update(conversationType);
//                    await _context.SaveChangesAsync();
//                }
//                catch (DbUpdateConcurrencyException)
//                {
//                    if (!ConversationTypeExists(conversationType.Id))
//                    {
//                        return NotFound();
//                    }
//                    else
//                    {
//                        throw;
//                    }
//                }
//                return RedirectToAction("Index");
            }
            return(View(editConversationType));
        }
Exemplo n.º 2
0
        // GET: Schooladmin/ConversationType/Edit/5
        public async Task <IActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var conversationType = await _context.ConversationTypes.SingleOrDefaultAsync(m => m.Id == id);

            if (conversationType == null)
            {
                return(NotFound());
            }
            var groups = await
                         _context.ConversationTypeClaims.Include(ctc => ctc.Group)
                         .Include(ctc => ctc.ConversationType)
                         .Where(ctc => ctc.ConversationType.Id == id)
                         .Select(ctc => ctc.Group.Id).ToListAsync();

            var editConversationType = new EditConversationTypeViewModel
            {
                Id             = id.Value,
                Name           = conversationType.ConversationName,
                Duration       = conversationType.ConversationDuration,
                SelectedGroups = groups,
                Groups         = new SelectList(_context.ApplicationUserGroups.OrderBy(g => g.GroupName).ToList(),
                                                "Id", "GroupName")
            };

            return(View(editConversationType));
        }
        // GET: Admin/ConversationType/Edit/5
        public async Task <IActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var conversationType = await _context.ConversationTypes.Include(ct => ct.School).SingleOrDefaultAsync(m => m.Id == id);

            if (conversationType == null)
            {
                return(NotFound());
            }
            var selectedGroups = await
                                 _context.ConversationTypeClaims.Include(ctc => ctc.Group)
                                 .Include(ctc => ctc.ConversationType)
                                 .Where(ctc => ctc.ConversationType.Id == id)
                                 .Select(ctc => ctc.Group.Id).ToListAsync();

            var editConversationType = new EditConversationTypeViewModel
            {
                Id             = id.Value,
                Name           = conversationType.ConversationName,
                Duration       = conversationType.ConversationDuration,
                SelectedGroups = selectedGroups,
                School         = conversationType.School.Id
            };

            editConversationType.Groups = new List <SelectListItem>();
            var groups = _context.ApplicationUserGroups.Include(g => g.School).OrderBy(g => g.GroupName).GroupBy(g => g.School).ToList();

            foreach (var groupList in groups)
            {
                var selectGroup = new SelectListGroup {
                    Name = groupList.Key.Name, Disabled = false
                };
                foreach (var group in groupList)
                {
                    ((List <SelectListItem>)editConversationType.Groups).Add(new SelectListItem {
                        Disabled = false, Group = selectGroup, Value = group.Id.ToString(), Text = group.GroupName
                    });
                }
                //((List<SelectListItem>)conversationTypeModel.Groups).Add(new SelectListItem { Text = group.GroupName, Value = group.Id.ToString(), Selected = true });
            }
            editConversationType.Schools = new SelectList(_context.Schools.ToList(), "Id", "Name");

            return(View(editConversationType));
        }
        public async Task <IActionResult> Edit(int id, EditConversationTypeViewModel model)
        {
            if (id != model.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                var origionalConversationType = _context.ConversationTypes.First(ct => ct.Id == id);
                var conversationType          = new ConversationType
                {
                    Id = model.Id,
                    ConversationName = model.Name
                };
                if (
                    !_context.Conversations.Include(c => c.ConversationType)
                    .Any(cpd => cpd.ConversationType.Id == id))
                {
                    conversationType.ConversationDuration = model.Duration;
                    conversationType.School = _context.Schools.First(s => s.Id == model.School);
                }
                var conversationTypeClaimsGroups =
                    _context.ConversationTypeClaims.Include(ctc => ctc.Group)
                    .Include(ctc => ctc.ConversationType)
                    .Where(ctc => ctc.ConversationType.Id == id)
                    .Select(ctc => ctc.Group)
                    .ToList();

                List <ApplicationUserGroup> modelGroups = new List <ApplicationUserGroup>();
                foreach (var selectedGroup in model.SelectedGroups)
                {
                    modelGroups.Add(_context.ApplicationUserGroups.First(g => g.Id == selectedGroup));
                }

                var removeGroups = conversationTypeClaimsGroups.Except(modelGroups).ToList();
                foreach (var group in removeGroups)
                {
                    if (!_context.Conversations.Include(c => c.ConversationType).Include(c => c.Group).Any(c => c.Group == group && c.ConversationType == origionalConversationType))
                    {
                        var conversationTypeClaim =
                            _context.ConversationTypeClaims.SingleOrDefault(ctc => ctc.ConversationType == origionalConversationType && ctc.Group == group);
                        if (conversationTypeClaim != null) // It shouldn't be null but just incase
                        {
                            _context.ConversationTypeClaims.Remove(conversationTypeClaim);
                        }
                    }
                }
                var AddGroups = modelGroups.Except(conversationTypeClaimsGroups).ToList();
                foreach (var group in AddGroups)
                {
                    _context.ConversationTypeClaims.Add(new ConversationTypeClaim
                    {
                        ConversationType = conversationType,
                        Group            = group
                    });
                }
                _context.Update(conversationType);
                await _context.SaveChangesAsync();

//                try
//                {
//                    _context.Update(conversationType);
//                    await _context.SaveChangesAsync();
//                }
//                catch (DbUpdateConcurrencyException)
//                {
//                    if (!ConversationTypeExists(conversationType.Id))
//                    {
//                        return NotFound();
//                    }
//                    else
//                    {
//                        throw;
//                    }
//                }
//                return RedirectToAction("Index");
            }
            return(View(model));
        }