public IActionResult Create(AssignmentViewmodel data)
        {
            try
            {
                //data.Member.Email = "*****@*****.**";
                if (data.Name != null && data.Description != null && data.Deadline > DateTime.Now)
                {
                    data.Member = _membersService.GetMember(User.Identity.Name);
                    _assignmentsService.AddAssignment(data);
                    ViewData["info"] = "Assignment added";
                }
                else
                {
                    return(View());
                }
            }
            catch (Exception ex)
            {
                ViewData["warning"] = "Assignment was not added!";
            }

            var list = _assignmentsService.GetAssignments();

            return(View("Index", list));
        }
        public IActionResult Post(string name, string assignmentType, string title, string description, string duration, string tags)
        {
            var tagList = string.IsNullOrEmpty(tags) ? new string[0] : tags.Split(",");

            var newAssignment = new Assignment
            {
                Name           = name,
                AssignmentType = assignmentType,
                Title          = title,
                Description    = description,
                Duration       = duration
            };

            try
            {
                _context.Assignments.Add(newAssignment);
                _context.SaveChanges();

                if (tagList.Length > 0)
                {
                    for (int i = 0; i < tagList.Length; i++)
                    {
                        var tag = _context.Tags.FirstOrDefault(t => t.Name == tagList[i]);
                        if (null == tag)
                        {
                            tag = new Tag {
                                Name = tagList[i]
                            };
                            _context.Tags.Add(tag);
                            _context.SaveChanges();
                        }

                        var link = new AssignmentTag
                        {
                            Assignment   = newAssignment,
                            AssignmentId = newAssignment.AssignmentId,
                            Tag          = tag,
                            TagId        = tag.TagId
                        };
                        newAssignment.AssignmentTags.Add(link);
                    }
                }

                _context.SaveChanges();
                var vm = AssignmentViewmodel.FromAssignment(newAssignment);
                vm.Tags = tagList;
                return(Ok(vm));
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex);
                return(StatusCode(500));
            }
        }
        public AssignmentViewmodel GetAssignment(Guid id)
        {
            var data = _assignmentsRepository.GetAssignment(id);
            AssignmentViewmodel assignment = new AssignmentViewmodel();

            assignment.Id          = data.Id;
            assignment.Name        = data.Name;
            assignment.Description = data.Description;
            assignment.Deadline    = data.Deadline;
            assignment.Member      = _membersService.GetMember(data.MemberEmail);
            return(assignment);
        }
        public void AddAssignment(AssignmentViewmodel assignment)
        {
            Assignment newAssignment = new Assignment()
            {
                Name        = assignment.Name,
                Description = assignment.Description,
                Deadline    = assignment.Deadline,
                MemberEmail = assignment.Member.Email
            };

            _assignmentsRepository.AddAssignment(newAssignment);
        }
        public IActionResult Get(int id)
        {
            var assignment = _context.Assignments.FirstOrDefault(a => a.AssignmentId == id);

            if (null == assignment)
            {
                return(NotFound());
            }
            else
            {
                var vm = AssignmentViewmodel.FromAssignment(assignment);
                return(Ok(vm));
            }
        }
        public IActionResult Get(string tag)
        {
            // The only requirement for this endpoint is that it be able to get multiple assignments by
            // tag. All non-tag queries respond with a 404.
            if (String.IsNullOrEmpty(tag))
            {
                return(NotFound());
            }

            try
            {
                var assignments = from a in _context.AssignmentsByTag(tag) select AssignmentViewmodel.FromAssignment(a);

                return(Ok(assignments));
            }
            catch
            {
                return(StatusCode(500));
            }
        }