Example #1
0
        public ActionResult UpdateAttend(string data)
        {
            // Authenticate first
            if (!Auth())
            {
                return(Message.createErrorReturn("Authentication failed, please try again", Message.API_ERROR_INVALID_CREDENTIALS));
            }

            Message          response = new Message();
            Message          message  = Message.createFromString(data);
            AttendanceBundle bundle   = JsonConvert.DeserializeObject <AttendanceBundle>(message.data);

            foreach (Attendance attendance in bundle.attendances)
            {
                foreach (AttendanceGroup group in attendance.groups)
                {
                    CmsData.Attend.RecordAttend(CurrentDatabase, attendance.peopleID, group.groupID, group.present, group.datetime);

                    CmsData.Attend attend = CurrentDatabase.Attends.FirstOrDefault(a => a.PeopleId == attendance.peopleID && a.OrganizationId == group.groupID && a.MeetingDate == group.datetime);

                    if (attend == null)
                    {
                        continue;
                    }

                    if (group.present)
                    {
                        attend.SubGroupID   = group.subgroupID;
                        attend.SubGroupName = group.subgroupName;
                    }
                    else
                    {
                        attend.SubGroupID   = 0;
                        attend.SubGroupName = "";
                    }

                    if (group.join)
                    {
                        JoinToOrg(attendance.peopleID, group.groupID);
                    }
                }

                CurrentDatabase.SubmitChanges();
            }

            if (message.device == Message.API_DEVICE_WEB)
            {
                string bundleData = SerializeJSON(bundle);
                var    m          = new CheckInModel();
                m.SavePrintJob(message.kiosk, null, bundleData);
                response.setNoError();
                response.count = 1;
                response.data  = bundleData;
                return(response);
            }

            List <Label> labels       = new List <Label>();
            string       securityCode = CurrentDatabase.NextSecurityCode().Select(c => c.Code).Single().Trim();

            using (var db = new SqlConnection(Util.ConnectionString)) {
                Dictionary <int, LabelFormat> formats = LabelFormat.forSize(db, bundle.labelSize);

                foreach (Attendance attendance in bundle.attendances)
                {
                    attendance.load();
                    attendance.labelSecurityCode = securityCode;

                    labels.AddRange(attendance.getLabels(formats, bundle.securityLabels, bundle.guestLabels, bundle.locationLabels, bundle.nameTagAge));
                }

                if (labels.Count > 0 && bundle.attendances.Count > 0 && bundle.securityLabels == Attendance.SECURITY_LABELS_PER_FAMILY)
                {
                    labels.AddRange(bundle.attendances[0].getSecurityLabel(formats));
                }
            }

            response.setNoError();
            response.count = 1;
            response.data  = SerializeJSON(labels);

            return(response);
        }