private ResponseMessageFcUnSync GetListOfFilesFromFranchiseServer(UnSyncListModel syncListModel)
        {
            using (var client = new SyncFranchiseClient(new BasicHttpBinding(), new EndpointAddress(syncListModel.WsAddress +
                                                                                                    SettingsData.Constants.Franchise.WS_SYNC_FILES)))
            {
                WcfExt.SetMtomEncodingAndSize(client.Endpoint);

                var res = client.GetUnSyncListOfFiles(syncListModel.FranchiseDataVersionUid);
                return(res);
            }
        }
        private void DownloadFilesToSyncWithServer(CancellationToken token)
        {
            List <UnSyncListModel> lstDataVersions;

            _eventLog.WriteEntry("Se inicia la descarga de los archivos", EventLogEntryType.Information);

            using (var repository = new FranchiseRepository())
            {
                lstDataVersions = repository.GetDataVersionsIdsReadyToDownload();
            }

            if (lstDataVersions == null || lstDataVersions.Any() == false)
            {
                _eventLog.WriteEntry("No existen archivos para descargar", EventLogEntryType.Information);
                return;
            }


            foreach (var syncListModel in lstDataVersions)
            {
                _eventLog.WriteEntry("Descargando version con UID: " + syncListModel.FranchiseDataVersionUid, EventLogEntryType.Information);

                try
                {
                    var syncListModelCs = syncListModel;
                    using (var client = new SyncFranchiseClient(new BasicHttpBinding(BasicHttpSecurityMode.None), new EndpointAddress(syncListModel.WsAddress +
                                                                                                                                      SettingsData.Constants.Franchise.WS_SYNC_FILES)))
                    {
                        WcfExt.SetMtomEncodingAndSize(client.Endpoint);

                        var tasks = new List <Task>();
                        using (var repository = new FranchiseRepository())
                        {
                            var inClient = client;

                            var query     = repository.GetFilesToSyncByVersionId(syncListModel.FranchiseDataVersionId);
                            var subscribe = query.ToObservable().Subscribe(fileModel => tasks.Add(DownloadFileAndVerifyCheckSum(syncListModelCs.FranchiseDataVersionUid,
                                                                                                                                fileModel, token, inClient)));
                            Task.WaitAll(tasks.ToArray(), token);
                            subscribe.Dispose();

                            repository.TrySetFranchiseSyncFilesCompleted(syncListModelCs.FranchiseDataVersionId);
                        }
                    }

                    _eventLog.WriteEntry("Se terminó la descarga de la version con UID: " + syncListModel.FranchiseDataVersionUid, EventLogEntryType.Information);
                }
                catch (Exception ex)
                {
                    _eventLog.WriteEntry(ex.Message + " -ST- " + ex.StackTrace, EventLogEntryType.Error);
                }
            }
        }
        private int FranchiseQueryForFiles(FranchiseDataVersion model, ResponseMessageModel response, string wsUrl)
        {
            using (var client = new SyncFranchiseClient(new BasicHttpBinding(), new EndpointAddress(wsUrl + SettingsData.Constants.Franchise.WS_SYNC_FILES)))
            {
                WcfExt.SetMtomEncodingAndSize(client.Endpoint);

                var res = client.QueryForFiles(model.FranchiseDataVersionUid);

                if (res.HasError == false)
                {
                    response.HasError = false;
                    return(res.TotalFiles);
                }

                response.Message  = res.Message;
                response.HasError = true;
                return(EntityConstants.NO_VALUE);
            }
        }
Example #4
0
        public static ResponseMessage StartSyncFiles(IList <SyncFranchiseModel> lstFranchiseSyncFiles)
        {
            var res = new ResponseMessage();

            if (lstFranchiseSyncFiles.Any() == false)
            {
                res.IsSuccess = true;
                return(res);
            }

            using (var client = new SyncServerSvcClient())
            {
                WcfExt.SetMtomEncodingAndSize(client.Endpoint);
                foreach (var syncFranchiseModel in lstFranchiseSyncFiles)
                {
                    var clientIn = client;
                    var tasks    = new List <Task>();
                    var syncFranchiseModelCopy = syncFranchiseModel;
                    var subscribe = syncFranchiseModel.LstFiles.ToObservable().Subscribe(syncFile =>
                    {
                        switch (syncFile.FileType)
                        {
                        case SettingsData.Constants.FranchiseConst.SYNC_FILE_TYPE_DATA:
                            {
                                tasks.Add(CheckFilesAndSync(syncFile, syncFranchiseModelCopy.Code, clientIn,
                                                            syncFranchiseModelCopy.FranchiseDataVersionUid));
                                break;
                            }

                        case SettingsData.Constants.FranchiseConst.SYNC_FILE_TYPE_LOGO:
                        case SettingsData.Constants.FranchiseConst.SYNC_FILE_TYPE_IMAGE_NOTIFICATION:
                            {
                                var uriPath = syncFile.FileType == SettingsData.Constants.FranchiseConst.SYNC_FILE_TYPE_LOGO ?
                                              SharedConstants.Client.URI_LOGO :
                                              SharedConstants.Client.URI_IMAGE_NOTIFICATION;

                                tasks.Add(CheckResourceAndSync(syncFile, uriPath, syncFile.FileType, clientIn));
                                break;
                            }

                        default:
                            syncFile.HasError = false;
                            break;
                        }
                    });

                    Task.WaitAll(tasks.ToArray());
                    subscribe.Dispose();
                }

                var sb = new StringBuilder();
                res.IsSuccess = true;
                foreach (var syncFranchiseModel in lstFranchiseSyncFiles.Where(e => e.FranchiseId != SharedConstants.ALL_FRANCHISES))
                {
                    try
                    {
                        var franchiseSuccess = true;
                        foreach (var syncFile in syncFranchiseModel.LstFiles.Where(syncFile => syncFile.HasError))
                        {
                            sb.AppendLine(syncFile.Message);
                            res.IsSuccess    = false;
                            franchiseSuccess = false;
                        }

                        if (franchiseSuccess)
                        {
                            client.SetFranchiseVersionTerminalOk(syncFranchiseModel.FranchiseId, syncFranchiseModel.Version,
                                                                 Cypher.Encrypt(Environment.MachineName));
                        }
                    }
                    catch (Exception ex)
                    {
                        res.IsSuccess = false;
                        sb.AppendLine(ex.Message + " -ST- " + ex.StackTrace);
                    }
                }

                if (res.IsSuccess == false)
                {
                    res.Message = sb.ToString();
                }
            }

            return(res);
        }