예제 #1
0
        public async Task <IActionResult> Delete(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            CaseItemOption opt = await _context.CaseItemOptions.SingleOrDefaultAsync(cio => cio.Id == id);

            if (opt == null)
            {
                return(NotFound());
            }
            return(View(opt));
        }
예제 #2
0
        public async Task <IActionResult> DeleteConfirmed(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            CaseItemOption opt = await _context.CaseItemOptions.SingleOrDefaultAsync(cio => cio.Id == id);

            if (opt == null)
            {
                return(NotFound());
            }
            _context.CaseItemOptions.Remove(opt);
            await _context.SaveChangesAsync();

            return(RedirectToAction(nameof(Edit), "CaseItems", new { id = opt.CaseItemTemplateId }));
        }
예제 #3
0
        public async Task <IActionResult> Edit(int id, CaseItemOption vm)
        {
            if (ModelState.IsValid)
            {
                CaseItemOption opt = await _context.CaseItemOptions.FindAsync(id);

                if (opt == null)
                {
                    return(NotFound());
                }

                // update object as per user changes
                opt.SerialNum  = vm.SerialNum;
                opt.OptionText = vm.OptionText;
                try
                {
                    _context.Update(opt);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    // check if the we are trying to edit was already deleted due to concurrency
                    if (!_context.CaseItemOptions.Any(cio => cio.Id == id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Edit), "CaseItems", new { id = opt.CaseItemTemplateId }));
            }
            // If we got this far, something failed, redisplay form
            return(View(vm));
        }
예제 #4
0
        public async Task <IActionResult> Edit(int id, CaseItemTemplateEditVM vm)
        {
            if (ModelState.IsValid)
            {
                CaseItemTemplate templ = await _context.CaseItemTemplates.FindAsync(id);

                if (templ == null)
                {
                    return(NotFound());
                }

                // update object as per user changes
                templ.Question           = vm.ItemTemplate.Question;
                templ.ResponseType       = vm.ItemTemplate.ResponseType;
                templ.SerialNum          = vm.ItemTemplate.SerialNum;
                templ.IsResponseRequired = vm.ItemTemplate.IsResponseRequired;
                //templ.Options = vm.ItemTemplate.Options;
                try
                {
                    _context.Update(templ);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    // check if the we are trying to edit was already deleted due to concurrency
                    if (!_context.CaseItemTemplates.Any(ci => ci.Id == id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }

                // create new option if not null or blank
                string newOpt = (vm.NewOptionText ?? "").Trim();
                if (!string.IsNullOrEmpty(newOpt))
                {
                    // find the biggest serial number for this CaseItemTemplate - https://stackoverflow.com/questions/7542021/how-to-get-max-value-of-a-column-using-entity-framework
                    int maxSerNum = 1;
                    if (_context.CaseItemOptions.Count() > 0)
                    {
                        maxSerNum = _context.CaseItemOptions.Select(o => o.SerialNum).Max() + 1;
                    }
                    CaseItemOption opt = new CaseItemOption()
                    {
                        CaseItemTemplateId = id,
                        OptionText         = newOpt,
                        SerialNum          = maxSerNum
                    };

                    _context.Add(opt);
                    int numInserted = await _context.SaveChangesAsync();

                    if (numInserted == 1)
                    {
                        _logger.LogInformation("New Case Item Template Option created");
                        //return RedirectToAction(nameof(Index));
                    }
                    else
                    {
                        string msg = $"New Case Item Template Option not created as db returned num insertions as {numInserted}";
                        _logger.LogInformation(msg);
                        //todo create custom exception
                        throw new Exception(msg);
                    }
                }
                return(RedirectToAction(nameof(Index)).WithSuccess("Case Item Editing done"));
            }
            var resTypes = Enum.GetValues(typeof(ResponseType)).Cast <ResponseType>().Select(v => v.ToString());

            ViewData["ResponseTypeId"] = new SelectList(resTypes, vm.ItemTemplate.ResponseType.ToString());
            // If we got this far, something failed, redisplay form
            return(View(vm));
        }