public void scheduleMeeting(MeetingViewModel model, Boolean isEdit = false) { using (EasyFindPropertiesEntities dbCtx = new EasyFindPropertiesEntities()) { UnitOfWork unitOfWork = new UnitOfWork(dbCtx); if (Session["userId"] != null) { Meeting meeting = null; var userId = (Guid)Session["userId"]; IEnumerable <MeetingMembers> orMeetingMembers = null; if (isEdit) { meeting = unitOfWork.Meeting.Get(model.ID); meeting.MeetingTitle = model.MeetingTitle; meeting.MeetingHour = model.MeetingHour; meeting.MeetingMinute = model.MeetingMinute; meeting.MeetingPeriod = model.MeetingPeriod; meeting.Location = model.Location; meeting.Purpose = model.Purpose; meeting.DateTCreated = DateTime.Now; //remove previous meeting members and replace with new orMeetingMembers = unitOfWork.Meeting.Get(model.ID).MeetingMembers; unitOfWork.MeetingMembers.RemoveRange(orMeetingMembers); } else { meeting = new Meeting() { ID = Guid.NewGuid(), InviterUserID = userId, MeetingTitle = model.MeetingTitle, MeetingDate = model.MeetingDate, MeetingHour = model.MeetingHour, MeetingMinute = model.MeetingMinute, MeetingPeriod = model.MeetingPeriod, Location = model.Location, Purpose = model.Purpose, DateTCreated = DateTime.Now }; unitOfWork.Meeting.Add(meeting);//if it is not an edit then add new meeting } foreach (var id in model.MeetingMemberUserIDs) { MeetingMembers meetingMembers = new MeetingMembers() { MeetingID = meeting.ID, InviteesUserID = id, DateTCreated = DateTime.Now }; unitOfWork.MeetingMembers.Add(meetingMembers); } unitOfWork.save(); //alert active users of their updated scheduled meetings foreach (var id in model.MeetingMemberUserIDs) { DashboardHub.broadcastMeeting(id.ToString()); } } } }
public override async Task InitializeAsync(object navigationData) { CurrentDate = DateTime.Now; IsBusy = true; try { var members = _memberService.GetMembers(); var weather = _weatherService.GetWeatherInfoAsync(); var events = _eventsService.GetEvents(); var suggestions = _ridesService.GetSuggestions(); var tasks = new List <Task> { weather, events, suggestions, members }; while (tasks.Count > 0) { var finishedTask = await Task.WhenAny(tasks); tasks.Remove(finishedTask); if (finishedTask.Status == TaskStatus.RanToCompletion) { if (finishedTask == weather) { var weatherResults = await weather; if (weatherResults is WeatherInfo) { var weatherInfo = weatherResults as WeatherInfo; Location = weatherInfo.LocationName; Temp = Math.Round(weatherInfo.Temp).ToString(); } } else if (finishedTask == events) { var eventsResults = await events; Events = new ObservableCollection <Event>(eventsResults); } else if (finishedTask == suggestions) { var suggestionsResults = await suggestions; Suggestions = new ObservableCollection <Suggestion>(suggestionsResults); } else if (finishedTask == members) { var memberResults = await members; //Invities Invitees[] invitiesObject = memberResults.Invitees; Invities = invitiesObject.Length.ToString(); //Attendees Attendees[] attendeesObject = memberResults.MeetingAttendees; Joined = attendeesObject.Length.ToString(); //New or Introduers HashSet <string> PersonIds = new HashSet <string>(invitiesObject.Select(s => s.PersonId)); var results = attendeesObject.Where(m => !PersonIds.Contains(m.PersonId)); Newjoin = results.Count().ToString(); //Not joined int attendees_invited = Math.Abs(attendeesObject.Length - results.Count()); NotJoined = Math.Abs(invitiesObject.Length - attendees_invited).ToString(); //Members var NewMember = new ObservableCollection <MeetingMembers>(); var newEvent = new ObservableCollection <Event>(); foreach (Attendees person in attendeesObject) { MeetingMembers meetingmembers = new MeetingMembers(); Event meetingevent = new Event(); if (person.EmpName.ToString().Trim() == "NaN") { meetingmembers.EmpName = "NEW"; meetingevent.Name = "NEW"; } else { meetingmembers.EmpName = person.EmpName; meetingevent.Name = person.EmpName; } meetingmembers.PersonId = person.PersonId; if (person.Department.ToString().Trim() == "NaN") { meetingmembers.Department = "NEW"; } else { meetingmembers.Department = person.Department; } meetingmembers.Gender = person.Gender; if (person.Smile == "Sad") { meetingmembers.Smiley = "Smiley1.png"; meetingevent.Emoction = "Smiley1.png"; } else if (person.Smile == "Smile") { meetingmembers.Smiley = "Smiley.png"; meetingevent.Emoction = "Smiley.png"; } else { meetingmembers.Smiley = "Smiley.png"; meetingevent.Emoction = "Smiley.png"; } meetingmembers.ImagePath = GlobalSettings.MemberEndpoint.ToString() + person.BlobName; meetingevent.ImagePath = meetingmembers.ImagePath; meetingmembers.Attendence = "Off.png"; meetingevent.Attendence = "Off.png"; meetingevent.Title = "Title"; meetingevent.Email = "*****@*****.**"; meetingevent.PhoneNumber = "123"; meetingevent.Venue = new Venue { Name = "Venue" }; newEvent.Add(meetingevent); NewMember.Add(meetingmembers); } HashSet <string> Id_Invitees = new HashSet <string>(invitiesObject.Select(s => s.PersonId)); var notPresent = attendeesObject.Where(m => !Id_Invitees.Contains(m.PersonId)); foreach (var person in notPresent) { if (person.EmpName.ToString().Trim() != "NaN") { MeetingMembers meetingmembers = new MeetingMembers(); Event meetingevent = new Event(); if (person.EmpName.ToString().Trim() == "NaN") { meetingmembers.EmpName = "NEW"; meetingevent.Name = "New"; } else { meetingmembers.EmpName = person.EmpName; meetingevent.Name = person.EmpName; } meetingmembers.PersonId = person.PersonId; if (person.Department.ToString().Trim() == "NaN") { meetingmembers.Department = "NEW"; } else { meetingmembers.Department = person.Department; } meetingmembers.Gender = person.Gender; if (person.Smile == "Sad") { meetingmembers.Smiley = "Smiley1.png"; meetingevent.Emoction = "Smiley1.png"; } else if (person.Smile == "Smile") { meetingmembers.Smiley = "Smiley.png"; meetingevent.Emoction = "Smiley.png"; } else { meetingmembers.Smiley = "Smiley.png"; meetingevent.Emoction = "Smiley.png"; } meetingmembers.ImagePath = GlobalSettings.MemberEndpoint.ToString() + person.BlobName; meetingevent.ImagePath = meetingmembers.ImagePath; meetingmembers.Attendence = "On.png"; meetingevent.Attendence = "On.png"; meetingevent.Title = "Title"; meetingevent.Email = "*****@*****.**"; meetingevent.PhoneNumber = "123"; meetingevent.Venue = new Venue { Name = "Venue" }; newEvent.Add(meetingevent); NewMember.Add(meetingmembers); } } Members = NewMember; Events = newEvent; } } } } catch (Exception ex) when(ex is WebException || ex is HttpRequestException) { await DialogService.ShowAlertAsync("Communication error", "Error", "Ok"); } catch (Exception ex) { Debug.WriteLine($"Error loading data in: {ex}"); } IsBusy = false; }