Beispiel #1
0
        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;
        }