/// <summary> /// Handle prospect down sync response /// </summary> /// <param name="customerResponse">The response</param> /// <returns>a void task</returns> private async Task HandleResponse(DownSyncServerResponse <Customer> customerResponse) { if (customerResponse == null) { return; } foreach (var customer in customerResponse.Package) { Customer cust = null; try { cust = await new CustomersController().GetSingleByCriteria( new CriteriaBuilder().Add("Phone", customer.Phone)); } catch (Exception e) { this.Logger.Error(e); } if (cust != null && cust.Id != default(Guid)) { // update Id so that the record is updated customer.Id = cust.Id; } customer.DsrPhone = customerResponse.DsrPhone; customer.Product.DisplayName = customer.Product.ProductName; } await new CustomersController().SaveBulkAsync(customerResponse.Package); }
/// <summary> /// Handle prospect down sync response /// </summary> /// <param name="prospectResponse">The response</param> /// <returns>a void task</returns> private async Task HandleResponse(DownSyncServerResponse <Prospect> prospectResponse) { if (prospectResponse == null) { return; } foreach (var prospect in prospectResponse.Package) { Prospect existingProspect = null; try { existingProspect = await new ProspectsController().GetSingleByCriteria( new CriteriaBuilder().Add("Phone", prospect.Phone)); } catch (Exception e) { this.Logger.Error(e); } if (existingProspect != null && existingProspect.Id != default(Guid)) { prospect.Converted = existingProspect.Converted; prospect.Id = default(Guid); prospect.Id = existingProspect.Id; continue; } prospect.DsrPhone = prospectResponse.DsrPhone; } await new ProspectsController().SaveBulkAsync(prospectResponse.Package); }
/// <summary> /// Handle prospect down sync response /// </summary> /// <param name="dsrTicketResponse">The response</param> /// <returns>a void task</returns> private async Task HandleResponse(DownSyncServerResponse <DsrTicket> dsrTicketResponse) { if (dsrTicketResponse == null) { return; } await new DsrTicketController().SaveBulkAsync(dsrTicketResponse.Package); }
/// <summary> /// This method handles different down sync server responses in a common place. /// </summary> /// <typeparam name="TModel">The type model for which to handle the response</typeparam> /// <param name="response">The response itself</param> /// <returns>Returns a void Task</returns> private async Task HandleDownSyncResponse <TModel>(DownSyncServerResponse <TModel> response) where TModel : class { if (response == null) { return; } for (int i = 0; i < response.Package.Count; i++) { SynchronizableModelBase item = response.Package[i] as SynchronizableModelBase; if (item == null) { break; } item.DontSync = true; response.Package[i] = item as TModel; } Type t = typeof(TModel); if (t == typeof(Prospect)) { // handle prospect down sync var prospectResponse = response as DownSyncServerResponse <Prospect>; await this.HandleResponse(prospectResponse); } if (t == typeof(Customer)) { // handle customer down sync var customerResponse = response as DownSyncServerResponse <Customer>; await this.HandleResponse(customerResponse); } if (t == typeof(CustomerTicket)) { // handle customer ticket down sync var customerTicketResponse = response as DownSyncServerResponse <CustomerTicket>; await this.HandleResponse(customerTicketResponse); } if (t == typeof(DsrTicket)) { // handle customer dsr down sync var dsrTicketResponse = response as DownSyncServerResponse <DsrTicket>; await this.HandleResponse(dsrTicketResponse); } }