public ActionResult Create(CreateViewModel model)
        {
            try
            {
                if (_context.Channels.Any(x => x.Name.Equals(model.Name)))
                {
                    throw new ArgumentException("Channelname taken");
                }

                var channel = new Channel();

                if (ModelState.IsValid)
                {
                    switch (model.AccessRestriction)
                    {
                    case 1:
                        channel.AccessRestriction = _context.AccessRestrictions.Where(x => x.Id == 1).First();
                        break;

                    case 2:
                        channel.AccessRestriction = _context.AccessRestrictions.Where(x => x.Id == 2).First();
                        break;

                    case 3:
                        if (model.DemandedRole.Id == _roleManager.FindByNameAsync("Administrator").Result.Id)
                        {
                            channel.AccessRestriction = _context.AccessRestrictions.Where(x => x.Id == 5).First();
                        }
                        else if (model.DemandedRole.Id == _roleManager.FindByNameAsync("Supplier").Result.Id)
                        {
                            channel.AccessRestriction = _context.AccessRestrictions.Where(x => x.Id == 4).First();
                        }
                        else
                        {
                            channel.AccessRestriction = _context.AccessRestrictions.Where(x => x.Id == 3).First();
                        }
                        break;

                    default:
                        channel.AccessRestriction = _context.AccessRestrictions.Where(x => x.Id == 1).First();
                        break;
                    }
                    channel.Group       = _context.Groups.Where(x => x.Id == model.GroupId).FirstOrDefault();
                    channel.User        = _context.Users.Where(x => x.Id == model.UserId).FirstOrDefault();
                    channel.Name        = model.Name;
                    channel.Description = channel.Description;

                    #region data

                    var datahelper = new DatatypeHelper();
                    //var something = datahelper.HandleAsObject(model.JsonContentAsString);
                    var jsonObject = datahelper.TakeJson(model.JsonContentAsString);
                    channel.Content = model.JsonContentAsString;

                    var requiredData = datahelper.GetRequired(model.JsonContentAsString, model.JsonRequiredKeys);
                    var req          = JsonConvert.SerializeObject(requiredData);
                    channel.ReqContent = req;
                    //var requirements = datahelper.GetRequiredList(channel.ReqContent);

                    //_mongoOperations.AddMultipleToCollection("Required Fields", requiredData);

                    #endregion

                    _context.Add(channel);
                    _context.SaveChanges();
                    _mongoOperations.CreateCollection(model.Name);
                    return(RedirectToAction("Index"));
                }

                if (!model.AsUser.Value)
                {
                    var currentUser = _userManager.GetUserAsync(HttpContext.User).Result;
                    var adminRole   = _roleManager.FindByNameAsync("Administrator").Result;
                    model.AccessibleGroups = _context.Associations.Where(x => x.User == currentUser && x.Role == adminRole).Select(x => x.Group).ToList();
                    if (model.AccessibleGroups.Count() == 1)
                    {
                        model.Group = model.AccessibleGroups.First();
                    }
                }
                return(View(model));
            }
            catch (ArgumentException e)
            {
                if (!model.AsUser.Value)
                {
                    var currentUser = _userManager.GetUserAsync(HttpContext.User).Result;
                    var adminRole   = _roleManager.FindByNameAsync("Administrator").Result;
                    model.AccessibleGroups = _context.Associations.Where(x => x.User == currentUser && x.Role == adminRole).Select(x => x.Group).ToList();
                    if (model.AccessibleGroups.Count() == 1)
                    {
                        model.Group = model.AccessibleGroups.First();
                    }
                }
                model.DuplicateName = true;
                return(View(model));
            }
            catch (Exception e)
            {
                return(View());
            }
        }
Beispiel #2
0
        public static FSPOffset setOffset(int offset, string datatype, string datagroup)
        {
            Datatype d = DatatypeHelper.ParseDatatype(datatype);

            return(new FSPOffset(offset, d, datagroup));
        }