Beispiel #1
0
        /// <summary>
        /// Fills matter creation data.
        /// </summary>
        /// <returns>
        /// The <see cref="Dictionary{String, Object}"/>.
        /// </returns>
        public Dictionary <string, object> FillMatterCreationData()
        {
            IEnumerable <SelectListItem> natures;
            IEnumerable <Notation>       notations;

            IEnumerable <RemoteDb>     remoteDbs     = EnumExtensions.ToArray <RemoteDb>();
            IEnumerable <SequenceType> sequenceTypes = EnumExtensions.ToArray <SequenceType>();
            IEnumerable <Group>        groups        = EnumExtensions.ToArray <Group>();

            if (AccountHelper.IsAdmin())
            {
                natures   = EnumHelper.GetSelectList(typeof(Nature));
                notations = EnumExtensions.ToArray <Notation>();
            }
            else
            {
                natures       = new[] { Nature.Genetic }.ToSelectList();
                notations     = new[] { Notation.Nucleotides };
                remoteDbs     = EnumExtensions.ToArray <RemoteDb>().Where(rd => rd.GetNature() == Nature.Genetic);
                sequenceTypes = EnumExtensions.ToArray <SequenceType>().Where(st => st.GetNature() == Nature.Genetic);
                groups        = EnumExtensions.ToArray <Group>().Where(g => g.GetNature() == Nature.Genetic);
            }

            return(new Dictionary <string, object>
            {
                { "matters", matterRepository.GetMatterSelectList() },
                { "natures", natures },
                { "notations", notations.ToSelectListWithNature() },
                { "remoteDbs", remoteDbs.ToSelectListWithNature() },
                { "sequenceTypes", sequenceTypes.ToSelectListWithNature() },
                { "groups", groups.ToSelectListWithNature() },
                { "languages", EnumHelper.GetSelectList(typeof(Language)) },
                { "translators", EnumHelper.GetSelectList(typeof(Translator)) }
            });
        }
        /// <summary>
        /// The edit.
        /// </summary>
        /// <param name="id">
        /// The id.
        /// </param>
        /// <returns>
        /// The <see cref="Task"/>.
        /// </returns>
        public async Task <ActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            SequenceGroup sequenceGroup = await db.SequenceGroup.FindAsync(id);

            if (sequenceGroup == null)
            {
                return(HttpNotFound());
            }

            using (var db = new LibiadaWebEntities())
            {
                var viewDataHelper   = new ViewDataHelper(db);
                var viewData         = viewDataHelper.FillViewData(1, int.MaxValue);
                var matterRepository = new MatterRepository(db);
                var matterIds        = sequenceGroup.Matters.Select(m => m.Id);
                bool Selected(Matter m) => matterIds.Contains(m.Id);

                viewData["matters"]            = matterRepository.GetMatterSelectList(db.Matter, Selected);
                viewData["sequenceGroupTypes"] = EnumExtensions.ToArray <SequenceGroupType>().ToSelectListWithNature();
                ViewBag.data = JsonConvert.SerializeObject(viewData);
            }

            return(View(sequenceGroup));
        }