public IActionResult RegisterAttendance(long id, [FromBody] StoreAttendanceMeetingDto attendance) { var dir = _env.WebRootPath; var meeting = _context.Meetings.Find(id); List <string> filenames = new List <string>(); if (meeting.Status == 0) { foreach (var file in attendance.Captures) { var fn = Path.GetRandomFileName(); string convertedfile = file.Replace("data:image/png;base64,", String.Empty); var imageDataByteArray = Convert.FromBase64String(convertedfile); var imageDataStream = new MemoryStream(imageDataByteArray) { Position = 0 }; using (var fileStream = new FileStream(Path.Combine(dir, "pictures", $"{fn}.png"), FileMode.Create, FileAccess.Write)) { imageDataStream.CopyTo(fileStream); filenames.Add(fn); } } using (var transaction = _context.Database.BeginTransaction()) { try { var currentTime = DateTime.Now; if (meeting.EndDate >= DateTime.Now) { meeting.StatusDescription = "Temprano"; } else { meeting.StatusDescription = "Tarde"; } meeting.DocumentPic = $"{filenames[0]}.png"; meeting.SelfiePic = $"{filenames[1]}.png"; meeting.Status = 1; meeting.UpdatedAt = DateTime.Now; _context.SaveChanges(); var employees = _context.Employees; foreach (EmployeeAttendanceDto e in attendance.EmployeesList) { var em = new EmployeeMeeting { EmployeeId = Convert.ToInt32(e.Id), MeetingId = Convert.ToInt32(meeting.Id), Attended = Convert.ToInt16(e.Attended), MissingReason = e.MissingReason, CreatedAt = DateTime.Now, UpdatedAt = DateTime.Now }; _context.EmployeeMeeting.Add(em); } _context.SaveChanges(); foreach (Employees e in attendance.Guests) { var em = new EmployeeMeeting { EmployeeId = Convert.ToInt32(e.Id), MeetingId = Convert.ToInt32(meeting.Id), Attended = 1, MissingReason = "Asistió", CreatedAt = DateTime.Now, UpdatedAt = DateTime.Now }; _context.EmployeeMeeting.Add(em); } _context.SaveChanges(); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); return(BadRequest(new { message = ex.Message })); } } } else { return(StatusCode(500)); } return(Ok()); }
public ResponseData CreateMeeting(MeetingInfo MeetingInfo) { try { EmployeeMeeting employeeMeeting = new EmployeeMeeting(); VisitorMeeting visitormeeting = new VisitorMeeting(); Visitor visitor = new Visitor(); Meeting meeting = new Meeting(); meeting.MeetingPin = MeetingRandomPin(); meeting.MeetingKey = MeetingRandomPin(); meeting.MeetingID = Guid.NewGuid(); meeting.StartTime = MeetingInfo.StartTime; meeting.EndTime = MeetingInfo.EndTime; meeting.Purpose = MeetingInfo.Purpose; MeetingInfo.MeetingPin = meeting.MeetingPin; MeetingInfo.MeetingKey = meeting.MeetingKey; db.Meetings.Add(meeting); foreach (var itememp in MeetingInfo.Employees) { List <Employee> searchemployee = db.Employees.Where(t => t.Email.Contains(itememp.Email)).ToList(); if (searchemployee.Any()) { foreach (Employee employee in searchemployee) { employeeMeeting.EmployeeMeetingID = Guid.NewGuid(); employeeMeeting.EmployeeID = employee.EmployeeID; employeeMeeting.MeetingID = meeting.MeetingID; db.EmployeeMeetings.Add(employeeMeeting); } db.SaveChanges(); employeeMeeting = new EmployeeMeeting(); } else { return(new ResponseData() { ErrorMessage = "error" }); } } foreach (var itemvis in MeetingInfo.Visitors) { List <Visitor> searchvisitor = db.Visitors.Where(t => t.Email.Contains(itemvis.Email)).ToList(); if (searchvisitor.Any()) { foreach (Visitor visitoring in searchvisitor) { visitormeeting.VisitorMeetingID = Guid.NewGuid(); visitormeeting.VisitorID = visitoring.VisitorID; visitormeeting.MeetingID = meeting.MeetingID; db.VisitorMeetings.Add(visitormeeting); db.SaveChanges(); visitormeeting = new VisitorMeeting(); } } else { foreach (var newitemvis in MeetingInfo.Visitors) { visitor.VisitorID = Guid.NewGuid(); visitor.Name = newitemvis.Name; visitor.Email = newitemvis.Email; visitor.Phone = newitemvis.Phone; visitor.Company = newitemvis.Company; db.Visitors.Add(visitor); visitormeeting.VisitorMeetingID = Guid.NewGuid(); visitormeeting.VisitorID = visitor.VisitorID; visitormeeting.MeetingID = meeting.MeetingID; db.VisitorMeetings.Add(visitormeeting); db.SaveChanges(); visitormeeting = new VisitorMeeting(); visitor = new Visitor(); } } } return(new ResponseData() { meetinginfo = MeetingInfo }); } catch (Exception ex) { return(new ResponseData() { ErrorMessage = ex.Message }); } }