Beispiel #1
0
        //
        //
        public rsPlanning TOrsPlanning()
        {
            rsPlanning result = new rsPlanning()
            {
                ID                = IDguid,
                OrderID           = OrderIDguid,
                StatusID          = StatusID,
                CarID             = CarID,
                UserID            = UserIDguid,
                StartDateTime     = StartTime,
                EndDateTime       = EndTime,
                PauzeTime         = PauzeTime,
                ExecStartDateTime = ExecStartDateTime,
                ExecEndDateTime   = ExecEndDateTime,
                // From Order
                Project     = Project,
                Alias       = Alias,
                OrderType   = OrderType,
                Description = Description,
                Comment     = Comment,
                Reference   = Reference,
                Customer    = Customer,
                ContactName = ContactName,
                Email       = Email,
                Phone       = Phone,
                Street      = Street,
                HouseNr     = HouseNr,
                Zip         = Zip,
                City        = City,
                Country     = Country,
                // From Planning
                Resources     = null,
                SignatureName = SignatureName,
                Signature     = null
            };

            return(result);
        }
        async private Task <bool> SaveRegistrationsAndSignatureDataToServer(Planning planning, int statusID)
        {
            try {
                SQLiteConnection db = App.dbHandler.db;
                StatusResult     statusResult;

                //lbStatus.Text = "Sending registrations"
                //activityIndicator.IsRunning = activityIndicator.IsVisible = true;
                UpdateUI(true);

                var regs = from r in db.Table <Registration> ()
                           where r.PlanningID == planning.ID
                           select r;
                List <rsRegistration> registrationList = new List <rsRegistration> (regs.Count() + 1);
                foreach (Registration r in regs)
                {
                    rsRegistration reg = new rsRegistration()
                    {
                        ID            = r.IDguid,
                        PlanningID    = r.PlanningIDguid,
                        OrderID       = r.OrderIDguid,
                        UserID        = r.UserIDguid,
                        Date          = r.Date,
                        RegTypeID     = r.RegTypeID,
                        Priority      = r.Priority,
                        IsDisplayed   = r.IsDisplayed,
                        IsOnReport    = r.IsOnReport,
                        IsRequired    = r.IsRequired,
                        IsReadingOnly = r.IsReadingOnly,
                        Caption       = r.Caption,
                        Result        = r.Result,
                        PathName      = r.PathName,
                        Input         = r.Input,
                        IsClientReg   = r.IsClientReg,
                        IsChanged     = r.IsChanged,
                        IsDeleted     = r.IsDeleted
                    };
                    registrationList.Add(reg);
                }

                //lbSendStatus.Text = text.SendingArticles;

                var artRegs = (from a in db.Table <ArticleReg> ()
                               where a.PlanningID == planning.ID
                               select new rsArticleReg()
                {
                    ArticleID = a.ArticleID, Article = "", OrderID = a.OrderIDguid, PlanningID = a.PlanningIDguid, Qty = a.Qty, IsChanged = a.IsChanged,
                    IsDeleted = a.IsDeleted, PriceIn = a.PriceIn, PriceOut = a.PriceOut
                }).ToList <rsArticleReg> ();

                // Save registrations and articleregistrations to server
                //
                SaveRegistrationInput input = new SaveRegistrationInput()
                {
                    userIDin       = App.appSettings.loginVars.userID.ToString(),
                    installationID = App.appSettings.installationID,
                    registrations  = registrationList,
                    articles       = artRegs
                };
                MobRegService service = new MobRegService(ProgramVars.URL);
                statusResult = await service.SaveRegistrationsAsync(input);

                if (statusResult.statusCode != 0)
                {
                    throw new Exception(statusResult.status);
                }


                //
                // SaveRegistrations completed OK, next SavePlanning
                //
                // input.dataIn, input.overWriteExecEndDateTime, input.includeSignatureData, input.sendReport, input.resources
                rsPlanning rsplanning        = planning.TOrsPlanning();
                var        planningResources = db.Table <Resource> ().Where(r => r.PlanningID == planning.ID);
                if (planningResources != null && planningResources.Count() > 0)
                {
                    rsplanning.Resources = new List <rsResource> (planningResources.Count());
                    foreach (Resource res in planningResources)
                    {
                        rsplanning.Resources.Add(res.TOrsResource());
                    }
                }

                SavePlanningInput saveInput = new SavePlanningInput()
                {
                    userIDin                 = App.appSettings.loginVars.userID.ToString(),
                    installationID           = App.appSettings.installationID,
                    dataIn                   = rsplanning,
                    overWriteExecEndDateTime = false,
                    includeSignatureData     = true,
                    sendReport               = false,
                    resources                = Common.GetResourcesForPlanningID(planning.ID)
                };
                statusResult = await service.SavePlanningAsync(saveInput);

                if (statusResult.statusCode != 0)
                {
                    throw new Exception(statusResult.status);
                }

                // Save all pictures with changes and not deleted to server
                //
                var regPics = from r in db.Table <Registration> ()
                              where r.PlanningID == planning.ID && r.RegTypeID == RegistrationTypes.Picture && r.IsChanged && !r.IsDeleted
                              select r;
                IFileSystem fileSystem = DependencyService.Get <IFileSystem>();
                string      handlerUrl, path;
                foreach (Registration r in regPics)
                {
                    path = fileSystem.GetDataPath($"{r.ID}.jpg");
                    if (fileSystem.ExistsFile(path).statusCode == 0)
                    {
                        handlerUrl = string.Format("{0}?regid={1}&userid={2}&instid={3:d}&mode=up", ProgramVars.ImageHandlerUrl,
                                                   r.ID, r.UserID, App.appSettings.installationID);
                        statusResult = await service.SaveBinaryAsync(handlerUrl, fileSystem.OpenFileStream(path));

                        if (statusResult.statusCode != 0)
                        {
                            throw new Exception(statusResult.status);
                        }
                    }
                }

                //statusPanel.Visible = false;

                // Save signature
                //
                handlerUrl = string.Format("{0}?regid={1}&userid={2}&instid={3:d}&mode=SIGNATURE", ProgramVars.ImageHandlerUrl,
                                           planning.ID, App.appSettings.loginVars.userID.ToString(), App.appSettings.installationID);
                path         = fileSystem.GetDataPath($"sig{planning.ID}.png");
                statusResult = await service.SaveBinaryAsync(handlerUrl, fileSystem.OpenFileStream(path));

                if (statusResult.statusCode != 0)
                {
                    throw new Exception(statusResult.status);
                }

                //activityIndicator.IsRunning = activityIndicator.IsVisible = false;
                UpdateUI(true);

                return(true);
            } catch (Exception ex) {
                //statusPanel.Visible = false;
                //activityIndicator.IsRunning = activityIndicator.IsVisible = false;
                UpdateUI(false);
                await DisplayAlert(AppResources.Error, ex.Message, AppResources.OK);

                return(false);
            }
        }