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; } }