public int InsertMeeting(MeetingDTO objDTO, string userId)
        {
            Meeting meetingObject = new Meeting();

            objDTO.MeetingIndexNumber = _repository.Query().SelectQueryable().Max(c => c.MeetingIndexNumber) + 1;
            objDTO.MeetingNumber      = _repository.Query().SelectQueryable().Where(c => c.MeetingDate.Year == objDTO.MeetingDate.Year).Any() ? _repository.Query().SelectQueryable().Where(c => c.MeetingDate.Year == objDTO.MeetingDate.Year).Max(c => c.MeetingNumber) + 1 : 1;
            try
            {
                _unitOfWork.BeginTransaction();
                objDTO.RoundId = _roundRepository.Query().SelectQueryable().Where(c => c.CouncilTypeId == objDTO.CouncilTypeId && c.IsCurrent).FirstOrDefault().Id;
                Mapper.Map <MeetingDTO, Meeting>(objDTO, meetingObject);
                //operationObject.RefernceNo = GenerateRefernceNo(operationObject);
                objDTO.MeetingAttendances.ToList().ForEach(c =>
                {
                    MeetingAttendance externalattendence = new MeetingAttendance();
                    Mapper.Map <MeetingAttendanceDTO, MeetingAttendance>(c, externalattendence);
                    externalattendence.MemberType = (int)EnumMemberType.External;
                    meetingObject.MeetingAttendances.Add(externalattendence);
                });
                //meetingObject.MeetingAttendances.ToList().ForEach(c => c.MemberType = (int)EnumMemberType.External);
                objDTO.SelectedCouncilMembers.ToList().ForEach(c =>
                {
                    var councilMember = _councilMemberBLL.GetById(c);
                    meetingObject.MeetingAttendances.Add(new MeetingAttendance()
                    {
                        CouncilMemberId = councilMember.Id,
                        Name            = councilMember.Name,
                        MemberType      = (int)EnumMemberType.CouncilMember,
                        Email           = councilMember.Email,
                    });
                });
                objDTO.SelectedEmployees.ToList().ForEach(c =>
                {
                    var emp = _employeeService.GetById(c.Id);
                    meetingObject.MeetingAttendances.Add(new MeetingAttendance()
                    {
                        Name           = c.Name,
                        EmployeId      = c.Id.ToString(),
                        DepartmentId   = c.DepartmentId,
                        DepartmentName = c.DepartmentName,
                        MemberType     = (int)EnumMemberType.Employee,
                        Email          = emp.Email,
                    });
                });
                base.Insert(meetingObject);
                if (_unitOfWork.SaveChanges() > 0)
                {
                    objDTO.AgendaItems.Where(c => c.AttachementName != "").ToList().ForEach(c =>
                    {
                        meetingObject
                        .AgendaItems
                        .Where(d => d.AgendaNumber == c.AgendaNumber).FirstOrDefault()
                        .AttachementName = CopyAttachment(
                            userId,
                            c.AttachementName,
                            meetingObject.Id,
                            meetingObject.AgendaItems.Where(d => d.AgendaNumber == c.AgendaNumber).FirstOrDefault().Id
                            , null);
                        var adendaItemId = meetingObject.AgendaItems.Where(item => item.AgendaNumber == c.AgendaNumber).FirstOrDefault().Id;
                        c.AgendaDetails.ToList().ForEach(d =>
                        {
                            meetingObject.AgendaItems.Where(f => f.Id == adendaItemId).SelectMany(y => y.AgendaDetails).Where(det => det.TreeNumber == d.TreeNumber).FirstOrDefault()
                            .AttachementName = CopyAttachment(
                                userId,
                                d.AttachementName,
                                meetingObject.Id,
                                adendaItemId,
                                meetingObject.AgendaItems.Where(f => f.Id == adendaItemId).SelectMany(y => y.AgendaDetails).Where(det => det.TreeNumber == d.TreeNumber).FirstOrDefault().Id);
                        });
                        _unitOfWork.SaveChanges();
                    });
                }
                _unitOfWork.Commit();
                return(meetingObject.Id);
            }
            catch (Exception ex)
            {
                _unitOfWork.Rollback();
                throw ex;
            }
        }