private static void GetCreditNotesFromServe(LOG_CHANGES changeset) { var note = WebApiClient.GetCreditNotes(changeset.ListVal).Result; if (note == null) { return; } note.StateL = LocalStatus.Procesado; var db = ContextFactory.GetDBContext(); var id = Convert.ToInt32(changeset.ListVal); var localId = db.ORPC_SupplierCreditNotes.Include(c => c.RPC1_SupplierCreditNoteDetail) .FirstOrDefault(c => c.IdSupplierCreditNote == changeset.IdL.Value); var localDE = db.ORPC_SupplierCreditNotes.Include(c => c.RPC1_SupplierCreditNoteDetail) .FirstOrDefault(c => c.DocEntry == id); if (changeset.IdL.HasValue) // C1 { if (localId == null) // C3 { db.ORPC_SupplierCreditNotes.Add(note); SupplierCreditNoteHelper.SaveTransaction(note); } else { if (localId.StateL == LocalStatus.Procesado) // C4 { if (localDE == null || localDE.DocEntry != localId.DocEntry) // C5 { db.ORPC_SupplierCreditNotes.Add(note); SupplierCreditNoteHelper.SaveTransaction(note); } else { localId.UpdateModelPropertiesFrom(note); } } else { localId.UpdateModelPropertiesFrom(note); SupplierCreditNoteHelper.SaveTransaction(note); } } } else // C2 -- El Idl no contenia un valor { if (localDE == null) { db.ORPC_SupplierCreditNotes.Add(note); SupplierCreditNoteHelper.SaveTransaction(note); } } //db.LOG_CHANGES.Add(changeset); changeset.AddChangeset(); }
private static void GetGoodIssues(LOG_CHANGES changeset) { var gi = WebApiClient.GetGoodIssue(changeset.ListVal).Result; if (gi == null) { return; } gi.StateL = LocalStatus.Procesado; var db = ContextFactory.GetDBContext(); var id = Convert.ToInt32(changeset.ListVal); var localId = db.OIGE_GoodsIssues.Include(c => c.IGE1_GoodsIssueDetail) .FirstOrDefault(c => c.IdGoodIssueL == changeset.IdL.Value); var localDE = db.OIGE_GoodsIssues.Include(c => c.IGE1_GoodsIssueDetail) .FirstOrDefault(c => c.DocEntry == id); if (changeset.IdL.HasValue) // C1 { if (localId == null) // C3 { db.OIGE_GoodsIssues.Add(gi); GoodIssuesHelper.SaveTransaction(gi); } else { if (localId.StateL == LocalStatus.Procesado) // C4 { if (localDE == null || localDE.DocEntry != localId.DocEntry) // C5 { db.OIGE_GoodsIssues.Add(gi); GoodIssuesHelper.SaveTransaction(gi); } else { localId.UpdateModelPropertiesFrom(gi); } } else { localId.UpdateModelPropertiesFrom(gi); GoodIssuesHelper.SaveTransaction(gi); } } } else // C2 -- El Idl no contenia un valor { if (localDE == null) { db.OIGE_GoodsIssues.Add(gi); GoodIssuesHelper.SaveTransaction(gi); } } //db.LOG_CHANGES.Add(changeset); changeset.AddChangeset(); }
private static void GetBusinessPartnerFromServer(LOG_CHANGES changeset) { var partner = WebApiClient.GetBusinessPartner(changeset.ListVal).Result; if (partner == null) { return; } var db = ContextFactory.GetDBContext(); var businessPartner = db.OCRD_BusinessPartner.FirstOrDefault(b => b.CardCode == partner.CardCode); if (businessPartner == null) { db.OCRD_BusinessPartner.Add(partner); } else { businessPartner.UpdateModelPropertiesFrom(partner); } // db.LOG_CHANGES.Add(changeset); changeset.AddChangeset(); db.SaveChanges(); if (onBussinesPartnerUpdate != null) { onBussinesPartnerUpdate(); } }
private static void GetGroupsFromServer(LOG_CHANGES changeset) { // Collection. var group = WebApiClient.GetItemGroups(changeset.ListVal).Result; // TODO implement }
private static void GetArticle(LOG_CHANGES changeset) { var p = WebApiClient.GetArticleByKey(changeset.ListVal).Result; p.OITW_BranchArticles.ForEach(a => a.LastSyncDateL = DateTime.Now); var db = ContextFactory.GetDBContext(); var current = db.OITM_Articles.Include(a => a.OITW_BranchArticles) .FirstOrDefault(prod => prod.ItemCode == p.ItemCode); if (current == null) { db.OITM_Articles.Add(p); } else { current.UpdateModelPropertiesFrom(p); if (current.OITW_BranchArticles.Count != p.OITW_BranchArticles.Count) { var localIds = current.OITW_BranchArticles .Select(a => Tuple.Create(a.ItemCode, a.WhsCode)) .ToList(); var news = p.OITW_BranchArticles.Where(a => !localIds.Contains(Tuple.Create(a.ItemCode, a.WhsCode))) .ToList(); news.ForEach(a => current.OITW_BranchArticles.Add(a)); } } // db.LOG_CHANGES.Add(changeset); changeset.AddChangeset(); }
public static Document GetDocumentTypeByCod(LOG_CHANGES log) { lock (Extensions.Locker) { var db = ContextFactory.GetDBContext(); return(db.Documents.FirstOrDefault(d => d.ObjType == log.ObjType)); } }
private static void GetDownPayments(LOG_CHANGES changeset) { var downPayment = WebApiClient.GetDownPayment(changeset.ListVal).Result; if (downPayment == null) { return; } downPayment.StateL = LocalStatus.Procesado; var db = ContextFactory.GetDBContext(); var id = Convert.ToInt32(changeset.ListVal); var localId = db.ODPI_DownPayment.Include(c => c.DPI1_DownPaymentDetail) .FirstOrDefault(c => c.IdDownPayment == changeset.IdL.Value); var localDE = db.ODPI_DownPayment.Include(c => c.DPI1_DownPaymentDetail) .FirstOrDefault(c => c.DocEntry == id); if (changeset.IdL.HasValue) // C1 { if (localId == null) // C3 { db.ODPI_DownPayment.Add(downPayment); } else { if (localId.StateL == LocalStatus.Procesado) // C4 { if (localDE == null || localDE.DocEntry != localId.DocEntry) // C5 { db.ODPI_DownPayment.Add(downPayment); } else { localId.UpdateModelPropertiesFrom(downPayment); } } else { localId.UpdateModelPropertiesFrom(downPayment); } } } else // C2 -- El Idl no contenia un valor { if (localDE == null) { db.ODPI_DownPayment.Add(downPayment); } } //db.LOG_CHANGES.Add(changeset); changeset.AddChangeset(); }
private static void GetPurchaseFromServer(LOG_CHANGES changeset) { var purchase = WebApiClient.GetPurchase(changeset.ListVal).Result; var db = ContextFactory.GetDBContext(); var id = Convert.ToInt32(changeset.ListVal); var localId = db.OPCH_Purchase.Include(c => c.PCH1_PurchaseDetail) .FirstOrDefault(c => c.IdPurchase == changeset.IdL.Value); var localDE = db.OPCH_Purchase.Include(c => c.PCH1_PurchaseDetail) .FirstOrDefault(c => c.DocEntry == id); if (changeset.IdL.HasValue) // C1 { if (localId == null) // C3 { db.OPCH_Purchase.Add(purchase); PurchaseHelper.SaveTransaction(purchase); } else { if (localId.StateL == LocalStatus.Procesado) // C4 { if (localDE == null || localDE.DocEntry != localId.DocEntry) // C5 { db.OPCH_Purchase.Add(purchase); PurchaseHelper.SaveTransaction(purchase); } else { localId.UpdateModelPropertiesFrom(purchase); } } else { localId.UpdateModelPropertiesFrom(purchase); PurchaseHelper.SaveTransaction(purchase); } } } else // C2 -- El Idl no contenia un valor { if (localDE == null) { db.OPCH_Purchase.Add(purchase); PurchaseHelper.SaveTransaction(purchase); } } // db.LOG_CHANGES.Add(changeset); changeset.AddChangeset(); }
//public static bool Upload(string whscode, string filePath) //{ // var apiRoute = string.Format("api/upload?whscode={0}", whscode); // // Create a progress notification handler // ProgressMessageHandler progress = new ProgressMessageHandler(); // // progress.HttpSendProgress += ProgressEventHandler; // // Create an HttpClient and wire up the progress handler // HttpClient client = HttpClientFactory.Create(progress); // client.BaseAddress = new Uri(UrlWebApi); // // Set the request timeout as large uploads can take longer than the default 2 minute timeout // client.Timeout = TimeSpan.FromMinutes(20); // // Open the file we want to upload and submit it // using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read, BufferSize, useAsync: true)) // { // // Create a stream content for the file // StreamContent content = new StreamContent(fileStream, BufferSize); // // Create Multipart form data content, add our submitter data and our stream content // MultipartFormDataContent formData = new MultipartFormDataContent(); // formData.Add(new StringContent(whscode), "submitter"); // formData.Add(content, "filename", Path.GetFileName(filePath)); // // Post the MIME multipart form data upload with the file // HttpResponseMessage response = client.PostAsync(apiRoute, formData).Result; // FileResult result = response.Content.ReadAsAsync<FileResult>().Result; // if (response.IsSuccessStatusCode) // { // Console.WriteLine("{0}Result:{0} Filename: {1}{0} Submitter: {2}", Environment.NewLine, // result.FileNames.FirstOrDefault(), result.Submitter); // } // return result != null; // } //} #endregion public static Task <bool> ConfirmChangeset(LOG_CHANGES changeset) { return(PostAsync <LOG_CHANGES, bool>("api/Synchronization", changeset)); }
private static void GetTransfersfromServer(LOG_CHANGES changeset) { var transfer = WebApiClient.GetTransfer(changeset.ListVal).Result; if (transfer == null) { return; } transfer.StateL = LocalStatus.Procesado; var db = ContextFactory.GetDBContext(); var id = Convert.ToInt32(changeset.ListVal); var localId = db.OWTR_Transfers.Include(c => c.WTR1_TransferDetails) .FirstOrDefault(c => c.IdTransferL == changeset.IdL.Value); var localDE = db.OWTR_Transfers.Include(c => c.WTR1_TransferDetails) .FirstOrDefault(c => c.DocEntry == id); if (changeset.IdL.HasValue) // C1 { if (localId == null) // C3 { db.OWTR_Transfers.Add(transfer); TransferHelper.SaveTransaction(transfer); } else { if (localId.StateL == LocalStatus.Procesado) // C4 { if (localDE == null || localDE.DocEntry != localId.DocEntry) // C5 { db.OWTR_Transfers.Add(transfer); TransferHelper.SaveTransaction(transfer); } else { localId.UpdateModelPropertiesFrom(transfer); } } else { localId.UpdateModelPropertiesFrom(transfer); TransferHelper.SaveTransaction(transfer); } } } else // C2 -- El Idl no contenia un valor { if (localDE == null) { db.OWTR_Transfers.Add(transfer); TransferHelper.SaveTransaction(transfer); } } //db.LOG_CHANGES.Add(changeset); changeset.AddChangeset(); }
private static void GetTransferTransferRequestFromServer(LOG_CHANGES changeset) { var transfer = WebApiClient.GetTransferRequest(changeset.ListVal).Result; if (transfer == null) { return; } transfer.StateL = LocalStatus.Procesado; var db = ContextFactory.GetDBContext(); var id = Convert.ToInt32(changeset.ListVal); var localId = db.OWTQ_TransferRequest.Include(c => c.WTQ1_TransferRequestDetails) .FirstOrDefault(c => c.IdTransferRequestL == changeset.IdL.Value); var localDE = db.OWTQ_TransferRequest.Include(c => c.WTQ1_TransferRequestDetails) .FirstOrDefault(c => c.DocEntry == id); if (changeset.IdL.HasValue) // C1 { if (localId == null) // C3 { db.OWTQ_TransferRequest.Add(transfer); } else { if (localId.StateL == LocalStatus.Procesado) // C4 { if (localDE == null || localDE.DocEntry != localId.DocEntry) // C5 { db.OWTQ_TransferRequest.Add(transfer); } else { localId.UpdateModelPropertiesFrom(transfer); } } else { localId.UpdateModelPropertiesFrom(transfer); } } } else // C2 -- El Idl no contenia un valor { if (localDE == null) { db.OWTQ_TransferRequest.Add(transfer); } } //db.LOG_CHANGES.Add(changeset); changeset.AddChangeset(); //if (changeset.SyncType == SyncType.Add) //{ // // Actualizar si Changeset Tiene Idl y no esta procesado localmente // if (changeset.IdL.HasValue) // { // var local = // db.OWTQ_TransferRequest.Include("WTQ1_TransferRequestDetails") // .FirstOrDefault(t => t.IdTransferRequestL == changeset.IdL.Value); // if (local == null) // { // NotifyException(transfer); // db.LOG_CHANGES.Add(changeset); // db.SaveChanges(); // return; // } // // Verificar si no esta procesado // if (local.StateL != LocalStatus.Procesado) // { // local.UpdateModelPropertiesFrom(transfer); // } // } // Si el objeto no tiene ID Local // else db.OWTQ_TransferRequest.Add(transfer); //} //if (changeset.SyncType == SyncType.Update) //{ // var local = // db.OWTQ_TransferRequest.Include("WTQ1_TransferRequestDetails") // .FirstOrDefault(t => t.DocEntry == transfer.DocEntry); // if (local == null) // { // NotifyException(transfer); // db.LOG_CHANGES.Add(changeset); // db.SaveChanges(); // return; // } // if (local.WTQ1_TransferRequestDetails.Count != transfer.WTQ1_TransferRequestDetails.Count) // { // // Remove All Local Details. // local.WTQ1_TransferRequestDetails.ForEach(d=> d.RemoveAndSave()); // local.WTQ1_TransferRequestDetails.AddRange(transfer.WTQ1_TransferRequestDetails); // local.UpdateModelPropertiesFrom(transfer,excludeComplexTypes:true); // } // else local.UpdateModelPropertiesFrom(transfer); //} //db.LOG_CHANGES.Add(changeset); //db.SaveChanges(); }
public static void GetSpecialOrdersFromServer(LOG_CHANGES changeset) { var order = WebApiClient.GetSpecialOrder(changeset.ListVal).Result; if (order == null) { return; } order.StateL = LocalStatus.Procesado; var db = ContextFactory.GetDBContext(); if (changeset.SyncType == SyncType.Add) { if (changeset.IdL.HasValue) { // Get Local if Local == null NotifyException () var local = db.ORDR_SpecialOrder.Include("RDR1_SpecialOrderDetail").Include("ATC1_Attachments") .FirstOrDefault(o => o.IdSpecialOrder == changeset.IdL.Value); if (local == null) { NotifyException(order); //db.LOG_CHANGES.Add(changeset); changeset.AddChangeset(); return; } // Verfiy != Procesado. if (local.StateL != LocalStatus.Procesado) { local.UpdateModelPropertiesFrom(order); } } else { db.ORDR_SpecialOrder.Add(order); } } if (changeset.SyncType == SyncType.Update) { var local = db.ORDR_SpecialOrder.Include("RDR1_SpecialOrderDetail").Include("ATC1_Attachments") .FirstOrDefault(o => o.DocEntry == order.DocEntry); if (local == null) { NotifyException(order); //db.LOG_CHANGES.Add(changeset); changeset.AddChangeset(); return; } if (local.RDR1_SpecialOrderDetail.Count == order.RDR1_SpecialOrderDetail.Count && local.ATC1_Attachments.Count == order.ATC1_Attachments.Count) { local.UpdateModelPropertiesFrom(order); } if (local.RDR1_SpecialOrderDetail.Count != order.RDR1_SpecialOrderDetail.Count) { local.RDR1_SpecialOrderDetail.ForEach(d => d.RemoveAndSave()); local.RDR1_SpecialOrderDetail.AddRange(order.RDR1_SpecialOrderDetail); local.UpdateModelPropertiesFrom(order, excludeComplexTypes: true); db.SaveChanges(); } if (local.ATC1_Attachments.Count != order.ATC1_Attachments.Count) { local.ATC1_Attachments.ForEach(d => d.RemoveAndSave()); local.ATC1_Attachments.AddRange(order.ATC1_Attachments); local.UpdateModelPropertiesFrom(order, excludeComplexTypes: true); db.SaveChanges(); } } //db.LOG_CHANGES.Add(changeset); changeset.AddChangeset(); }
private static void DoSync(Document doc, LOG_CHANGES changeset) { //try //{ using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions() { Timeout = TimeSpan.FromMinutes(10), IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted })) { lock (Extensions.Locker) { if (doc.DocumentType == typeof(OWTQ_TransferRequest)) { GetTransferTransferRequestFromServer(changeset); } if (doc.DocumentType == typeof(OWTR_Transfers)) { GetTransfersfromServer(changeset); } if (doc.DocumentType == typeof(ORDR_SpecialOrder)) { GetSpecialOrdersFromServer(changeset); } if (doc.DocumentType == typeof(OCRD_BusinessPartner)) { GetBusinessPartnerFromServer(changeset); } if (doc.DocumentType == typeof(ORPC_SupplierCreditNotes)) { GetCreditNotesFromServe(changeset); } if (doc.DocumentType == typeof(OINV_Sales)) { GetSalesFromServer(changeset); } if (doc.DocumentType == typeof(ODPI_DownPayment)) { GetDownPayments(changeset); } if (doc.DocumentType == typeof(OIGE_GoodsIssues)) { GetGoodIssues(changeset); } if (doc.DocumentType == typeof(OIGN_GoodsReceipt)) { GetGoodReceipts(changeset); } if (doc.DocumentType == typeof(OITB_Groups)) { GetGroupsFromServer(changeset); // TODO implement } if (doc.DocumentType == typeof(OPCH_Purchase)) { GetPurchaseFromServer(changeset); } if (doc.DocumentType == typeof(OITM_Articles)) { GetArticle(changeset); } if (doc.DocumentType == typeof(ORIN_ClientCreditNotes)) { GetClientCreditNotes(changeset); } ContextFactory.GetDBContext().SaveChanges(); scope.Complete(); } } if (onSyncItem != null) { onSyncItem(); } //} //catch (DbEntityValidationException ex) //{ // LoggerHelper.WriteLog(ex); // return false; // throw ex; //} //catch (Exception ex) //{ // // TODO show Exception TO User // //ContextFactory.RollBack(); // LoggerHelper.WriteLog(ex,"Error En Syncronizacion."); // return false; //} }