public async Task <bool> AddMeetingAsync(NewMeeting newMeeting)
        {
            bool createAction     = false;
            bool createAgenda     = false;
            bool createAttendance = false;

            using (var transaction = _context.Database.BeginTransaction())
            {
                try
                {
                    int meetingId = await CreateMeeting(newMeeting);

                    createAgenda = await CreateAgenda(newMeeting, meetingId);

                    createAction = await CreateAction(newMeeting, meetingId);

                    createAttendance = await CreateMeetingAttendance(newMeeting, meetingId);

                    transaction.Commit();
                }
                catch (Exception)
                {
                    // TODO: Handle failure
                }
            }
            return((createAction && createAgenda && createAttendance) == true);
        }
        private async Task <int> CreateMeeting(NewMeeting newMeeting)
        {
            var entity = new Meeting
            {
                Title    = newMeeting.Title,
                Location = newMeeting.Location,
                Note     = newMeeting.Note,
                DateTime = newMeeting.DateTime
            };

            _context.Meetings.Add(entity);
            var result = await _context.SaveChangesAsync();

            return(entity.MeetingId);
        }
        private async Task <bool> CreateMeetingAttendance(NewMeeting newMeeting, int meetingId)
        {
            foreach (Attendance s in newMeeting.Attendance)
            {
                var entity = new MeetingAttendance
                {
                    MeetingId = meetingId,
                    UserId    = s.UserId
                };
                _context.MeetingAttendances.Add(entity);
            }
            var saveResult = await _context.SaveChangesAsync();

            return(saveResult != 0);
        }
        private async Task <bool> CreateAction(NewMeeting newMeeting, int meetingId)
        {
            foreach (NewAction s in newMeeting.Action)
            {
                var entity = new Models.Action
                {
                    Description = s.Description,
                    MeetingId   = meetingId
                };
                _context.Actions.Add(entity);
            }
            var saveResult = await _context.SaveChangesAsync();

            return(saveResult != 0);
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> CreateAsync([FromBody] NewMeeting newMeeting)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var successful = await _meetingService.AddMeetingAsync(newMeeting);

            if (!successful)
            {
                return(BadRequest(new { error = "Could not add item." }));
            }

            return(Ok(successful));
        }