//
        // GET: /Events/

        public ActionResult MyEvents()
        {
            var eventsViewModels = new List<EventViewModel>();
            var user = userProcessor.GetUserByName(User.Identity.Name).Id; 
            List<News> news = new List<News>(newsRepository.GetAllNewsForUser(user).OrderByDescending(x=> x.HumanTaskHistory.ChangeDateTime));
           
            foreach (var newse in news)
            {
                eventsViewModels.Add(CreateEventViewModel(newse));
            }
            var listEvents = new ListEventViewModel();
            listEvents.Events = eventsViewModels;
            listEvents.Projects = new List<ProjectDataForEventsViewModel>();
            listEvents.Projects.AddRange(projectProcessor.GetAllProjectsForUser(user).Select(
                x => new ProjectDataForEventsViewModel{ProjectId = x.Id,ProjectName = x.Name}));
            listEvents.Projects.AddRange(projectProcessor.GetAllProjectsForTheirCreator(user).Select(
                x => new ProjectDataForEventsViewModel { ProjectId = x.Id, ProjectName = x.Name }));
            listEvents.CurrentUserId = user;
            listEvents.Invitations = projectProcessor.GetAllInvitationsToUser(user).Select(x => 
                new InvintationsInEventsViewModel
                    {
                        InvitationId = x.Id,
                        ProjectId = x.ProjectId,
                        ProjectName = x.Project.Name,
                        SenderId = x.SenderId,
                        SenderName = x.Sender.UserName
                    }
                ).ToList();
            
            return View(listEvents);
        }
  // type == 1, all news about all tasks in my projects
  // type == 2, news about only me
  // type > 2, news for some project
 
  public ActionResult GetNews(ListEventViewModel eventsViewModels,  int type,int projectId=-1)
  {
      if (eventsViewModels == null)
          return Json(eventsViewModels);
      eventsViewModels.Events = eventsViewModels.Events.Select(x =>
                                      {
                                          x.IsVisible = true;
                                          return x;
                                      }).ToList();
      if (type == 2)
      {
          foreach (var event_ in eventsViewModels.Events)
          {
              if(event_.WhoAssigneUserId != eventsViewModels.CurrentUserId 
                 && event_.WhoChangeUserId != eventsViewModels.CurrentUserId )
              {
                  event_.IsVisible = false;
              }
          }
       }
      if(type > 2)
      {
          foreach (var event_ in eventsViewModels.Events)
          {
              if(event_.ProjectId != projectId)
              {
                  event_.IsVisible = false;
              }
          }
          
      }
      return Json(eventsViewModels);
     }
 public ActionResult MarkAllUnreadNewsAsReaden(ListEventViewModel eventsViewModels)
 {
     var user = userProcessor.GetUserByName(User.Identity.Name);
     newsRepository.MarkAllUnreadNewsForUser(user.Id);
     eventsViewModels.Events = eventsViewModels.Events.Select(x =>
     {
         x.ContainerClassName = "container evnt_read";
         return x;
     }).ToList();
     this.notifier.SetCountOfNews(user.UserName);
     return Json(eventsViewModels);
 }