コード例 #1
0
ファイル: DbSync.cs プロジェクト: Strahbehry/school
        private static void DownloadBaseTables()
        {
            // AnswerSetValues
            OnlineDatabase.AnswerSetValues.Select(x => x.Value).Distinct().ToList().ForEach(x => { OfflineDatabase.AnswerSetValues.Add(new AnswerSetValue {
                    Value = x
                }); });

            // JobTitles
            OfflineDatabase.JobTitles.AddRange(OnlineDatabase.JobTitles.AsNoTracking());

            // QuestionTypes
            OfflineDatabase.QuestionTypes.AddRange(OnlineDatabase.QuestionTypes.AsNoTracking());

            // Adresses
            OnlineDatabase.Addresses.AsNoTracking().ToList().ForEach(x => OfflineDatabase.Addresses.Add(x.GetCleanModel()));

            OfflineDatabase.SaveChanges();

            // Employees
            OnlineDatabase.Employees.AsNoTracking().ToList().ForEach(x =>
            {
                var employee      = x.GetCleanModel();
                employee.Address  = OfflineDatabase.Addresses.FirstOrDefault(a => a.Hash == x.Address.Hash);
                employee.JobTitle = OfflineDatabase.JobTitles.FirstOrDefault(j => j.Name == x.JobTitle.Name);

                OfflineDatabase.Employees.AddOrUpdate(employee);
            });

            // Customer
            OnlineDatabase.Customers.AsNoTracking().ToList().ForEach(x =>
            {
                var customer     = x.GetCleanModel();
                customer.Address = OfflineDatabase.Addresses.FirstOrDefault(a => a.Hash == x.Address.Hash);

                OfflineDatabase.Customers.Add(customer);
            });

            OfflineDatabase.SaveChanges();
        }
コード例 #2
0
ファイル: DbSync.cs プロジェクト: Strahbehry/school
        private static void Download(Inspection inspection)
        {
            var newInspection  = inspection.GetCleanModel();
            var inspectionTask = inspection.Task;

            // Checklist
            var checklist = new Checklist
            {
                ID              = inspectionTask.Checklist.ID,
                Name            = inspectionTask.Checklist.Name,
                DateTimeCreated = inspectionTask.Checklist.DateTimeCreated,
                Remarks         = inspectionTask.Checklist.Remarks,
                Hash            = inspectionTask.Checklist.Hash
            };

            checklist.Inspections.Add(newInspection);

            OfflineDatabase.Checklists.Add(checklist);

            // ParkingLot
            var parkingLot = inspectionTask.ParkingLot.GetCleanModel();

            parkingLot.Address = OfflineDatabase.Addresses.FirstOrDefault(x => x.Hash == inspectionTask.ParkingLot.Address.Hash);

            OfflineDatabase.ParkingLots.Add(parkingLot);

            // ChecklistQuestions
            inspection.Checklist.ChecklistQuestions.ToList().ForEach(x =>
            {
                var question          = x.Question.GetCleanModel();
                question.QuestionType = OfflineDatabase.QuestionTypes.FirstOrDefault(a => a.Name == x.Question.QuestionType.Name);

                // AnswerSetValues
                x.Question.AnswerSetValues.ToList().ForEach(b =>
                {
                    var asv = OfflineDatabase.AnswerSetValues.FirstOrDefault(k => k.Value == b.Value) ?? new AnswerSetValue {
                        Value = b.Value
                    };

                    question.AnswerSetValues.Add(asv);
                });

                checklist.ChecklistQuestions.Add(new ChecklistQuestion {
                    Question = question
                });
            });

            // InspectionInspector
            inspection.InspectionInspectors.ToList().ForEach(x =>
            {
                newInspection.InspectionInspectors.Add(new InspectionInspector
                {
                    Employee    = OfflineDatabase.Employees.FirstOrDefault(b => b.Hash == x.Employee.Hash),
                    Remarks     = x.Remarks,
                    LastUpdated = x.LastUpdated
                });
            });

            // Task
            var task = inspectionTask.GetCleanModel();

            task.ParkingLot = parkingLot;
            task.Checklist  = checklist;
            task.Inspections.Add(newInspection);
            task.Customer = OfflineDatabase.Customers.FirstOrDefault(x => x.Hash == inspectionTask.Customer.Hash);

            OfflineDatabase.Tasks.Add(task);
            OfflineDatabase.SaveChanges();
        }