예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
        /// <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);
            }
        }