Пример #1
0
        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
                });
            }
        }