/// <summary> /// Add a new event with his creator /// </summary> /// <param name="information"></param> /// <param name="netname"></param> public async void InsertEvent(NewEvent information, string netname) { var newEvent = new EVENT { NAME = information.Name, DESCRIPTION = information.Description, TIME_BEGIN = information.TimeBegin, TIME_END = information.TimeEnd, LOCATION = information.Location, ROOM = information.Room, TYPE = information.Type.ToString(), STATUS = EventStatusType.Scheduled.ToString() }; _database.EVENTS.Add(newEvent); await _database.SaveChangesAsync(); var newOwner = new EVENT_USERS { STUDENT_NETNAME_FK = netname, ROLE = Role.Creator.ToString(), STATUS = UserStatus.EventOrganizer.ToString(), EVENT_ID = newEvent.ID_PK }; _database.EVENT_USERS.Add(newOwner); await _database.SaveChangesAsync(); }
/// <summary> /// Register user to a event /// </summary> /// <param name="user"></param> /// <returns></returns> public ScannerResult RegisterScannedUser(ScannerUser user) { var processResult = new ScannerResult { Status = ScannerStatus.IdNotFound.ToString() }; var currentUser = _database.STUDENTS .Where(e => e.ID == user.StudentId) .FirstOrDefault(); if (currentUser != null) { //tracking user if (user.Type == EventType.Open) { var newUser = new EVENT_USERS { STUDENT_NETNAME_FK = currentUser.NETNAME, ROLE = Role.Attendee.ToString(), STATUS = UserStatus.Tracking.ToString(), EVENT_ID = user.EventID, }; _database.EVENT_USERS.Add(newUser); processResult.Status = ScannerStatus.Success.ToString(); } else { //validating his registation var registeredUser = _database.EVENT_USERS .Where(r => r.EVENT_ID == user.EventID && r.STUDENT_NETNAME_FK == currentUser.NETNAME) .FirstOrDefault(); if (registeredUser != null) { registeredUser.STATUS = UserStatus.Attending.ToString(); _database.SaveChanges(); processResult.Status = ScannerStatus.Success.ToString(); } else { processResult.Status = ScannerStatus.UserWasNotRegistered.ToString(); } } } return(processResult); }
/// <summary> /// Add a user to an event if he exist in the system /// </summary> /// <param name="user"></param> /// <returns></returns> public async Task <EventActionResult> InsertUserAsync(NewEventUser user) { var selectedEvent = await _database.EVENTS .Where(e => e.ID_PK == user.EventID) .FirstOrDefaultAsync(); if (selectedEvent != null) { var netName = ""; if (!string.IsNullOrEmpty(user.UserNetname)) { var student = await _database.STUDENTS .Where(s => s.NETNAME == user.UserNetname) .FirstOrDefaultAsync(); if (student != null) { netName = student.NETNAME; } } else if (user.UserId != null) { var student = await _database.STUDENTS .Where(s => s.ID == user.UserId) .FirstOrDefaultAsync(); if (student != null) { netName = student.NETNAME; } } if (!string.IsNullOrEmpty(netName)) { //student does exist var userExist = await _database.EVENT_USERS .Where(u => u.EVENT_ID == user.EventID && u.STUDENT_NETNAME_FK == netName) .FirstOrDefaultAsync(); if (userExist != null) { //user exist thus duplicate action return(EventActionResult.DuplicateUser); } var status = UserStatus.Tracking.ToString();; if (string.Equals(selectedEvent.TYPE, EventType.Closed.ToString(), StringComparison.OrdinalIgnoreCase)) { status = UserStatus.Registered.ToString(); } if (user.Role != Role.Attendee) { status = UserStatus.EventOrganizer.ToString(); } var newUser = new EVENT_USERS { STUDENT_NETNAME_FK = netName, ROLE = user.Role.ToString(), STATUS = status, EVENT_ID = user.EventID, }; _database.EVENT_USERS.Add(newUser); await _database.SaveChangesAsync(); return(EventActionResult.Success); } else { return(EventActionResult.UserNotFound); } } else { return(EventActionResult.EventNotFound); } }