Пример #1
0
        public static PricesList FromPricesList(Dictionary <Int32, FlyerMeDS.fly_sp_GetListSizeRow> pricesList)
        {
            PricesList result = null;

            if (pricesList != null && pricesList.Count > 0)
            {
                var items = pricesList.Values.Select(p => new PricesListItem
                {
                    ListSize = p.listsize,
                    Market   = p.market,
                    MarketId = p.marketid,
                    Price    = p.price
                })
                            .ToList();

                result = new PricesList
                {
                    Items      = items,
                    TotalPrice = items.Sum(i => i.Price),
                    Markets    = String.Join("|", items.Select(i => i.Market).ToArray())
                };
            }

            return(result);
        }
Пример #2
0
        public static PricesList FromParameters(Order order, String marketType, String markets)
        {
            PricesList result = null;

            if ((!String.IsNullOrEmpty(marketType)) && (!String.IsNullOrEmpty(markets)))
            {
                var data = new FlyerBLL().GetMarketList(order.market_state, marketType, order.type)
                           .Cast <FlyerMeDS.fly_sp_GetListSizeRow>();
                var md        = data.ToDictionary(k => k.market.ToLower(), v => v);
                var ml        = data.ToList();
                var itemNames = markets.Split('|');

                if (itemNames.Length > 0)
                {
                    result = new PricesList();

                    FlyerMeDS.fly_sp_GetListSizeRow row;

                    foreach (var name in itemNames)
                    {
                        if (md.ContainsKey(name.ToLower()))
                        {
                            row = md[name.ToLower()];
                            result.Items.Add(new PricesListItem
                            {
                                ListSize = row.listsize,
                                Market   = row.market,
                                MarketId = row.marketid,
                                Price    = row.price,
                                Index    = ml.IndexOf(row)
                            });

                            result.TotalPrice += row.price;
                        }
                    }

                    if (result.Items.Count > 0)
                    {
                        result.Markets = String.Join("|", result.Items.Select(i => i.Market).ToArray());
                        result.Prices  = String.Join(",", result.Items.Select(i => i.Index.ToString()).ToArray());
                    }
                }
            }

            return(result);
        }
Пример #3
0
        public static WizardFlyer FromOrder(Order order)
        {
            if (order == null)
            {
                throw new Exception("order parameter is required");
            }

            var result = WizardFlyer.SetFlyer((FlyerTypes)Enum.Parse(typeof(FlyerTypes), order.type, true));

            if (order.order_id > 0)
            {
                result.OrderId = order.order_id;
            }

            Func <String, String> getStringValue = (value) => value.HasNoText() ? null : value;

            result.FlyerTitle   = order.title.HasNoText() ? null : order.title.Trim();
            result.EmailSubject = getStringValue(order.email_subject);

            if (result.FlyerTitle.HasText() && result.EmailSubject.HasText())
            {
                result.FlyerTitleStepCompleted = true;
            }

            result.Name  = getStringValue(order.field5) ?? Helper.GetCustomerNameByEmail(order.customer_id);
            result.Phone = getStringValue(order.field2);
            result.Ext   = getStringValue(order.field3);
            result.Email = getStringValue(order.field1);

            if (result.Name.HasText() || result.Phone.HasText() || result.Email.HasText())
            {
                result.ContactDetailsStepCompleted = true;
            }

            String offerType;
            String propertyType;

            if (order.PropertyCategory > 0)
            {
                ParsePropertyCategory(order.PropertyCategory, out offerType, out propertyType);
                result.OfferType          = offerType;
                result.PropertyType       = propertyType;
                result.PropertyCategoryId = order.PropertyCategory.ToString();
            }

            if (order.PropertyType > 0)
            {
                result.ResidentialType = order.PropertyType.ToString();
            }

            if (result.OfferType.HasText() && result.PropertyType.HasText() && result.ResidentialType.HasText())
            {
                result.PropertyTypeStepCompleted = true;
            }

            result.StreetAddress = order.prop_address1.HasNoText() ? null : order.prop_address1.Trim();
            result.AptSuiteBldg  = getStringValue(order.AptSuiteBldg);
            result.City          = order.prop_city.HasNoText() ? null : order.prop_city.Trim();
            result.State         = getStringValue(order.prop_state);
            result.ZipCode       = getStringValue(order.prop_zipcode);
            result.MapLink       = getStringValue(order.map_link);

            if (result.MapLink.HasText())
            {
                result.AddMap = true;
            }

            if (result.StreetAddress.HasText() || result.AptSuiteBldg.HasText() || result.City.HasText() || result.State.HasText() || result.ZipCode.HasText())
            {
                result.LocationStepCompleted = true;
            }

            result.Location = getStringValue(order.location);

            if (result.Location.HasText())
            {
                result.DesiredLocationStepCompleted = true;
            }

            result.MlsNumber   = getStringValue(order.mls_number);
            result.YearBuilt   = getStringValue(order.YearBuilt);
            result.Subdivision = getStringValue(order.Subdivision);
            result.Hoa         = getStringValue(order.HOA);
            result.Bedrooms    = getStringValue(order.Bedrooms);
            result.Bathrooms   = getStringValue(order.FullBaths);
            result.LotSize     = getStringValue(order.LotSize);
            result.Sqft        = getStringValue(order.SqFoots);
            result.Floors      = getStringValue(order.Floors);
            result.Parking     = getStringValue(order.Parking);
            result.OpenHouses  = getStringValue(order.OpenHouses);
            result.Description = getStringValue(order.prop_desc);

            if (result.MlsNumber.HasText() || result.YearBuilt.HasText() || result.Subdivision.HasText() ||
                result.Hoa.HasText() || result.Bedrooms.HasText() || result.Bathrooms.HasText() ||
                result.LotSize.HasText() || result.Sqft.HasText() || result.Floors.HasText() ||
                result.Parking.HasText() || result.OpenHouses.HasText() || result.Description.HasText())
            {
                result.DescriptionStepCompleted = true;
            }

            if (result.FlyerType == FlyerTypes.Custom)
            {
                result.Link = getStringValue(order.virtualtour_link);
            }

            var amenities = result.GetType().GetProperties()
                            .Where(p => p.GetCustomAttributes(typeof(AmenityAttribute), false).Length > 0)
                            .ToDictionary(k => (k.GetCustomAttributes(typeof(DisplayNameAttribute), false)[0] as DisplayNameAttribute).DisplayName.ToLower(), v => v);

            if (order.PropertyFeatures.HasText() && order.PropertyFeaturesValues.HasText())
            {
                var     keys   = order.PropertyFeatures.Split(':');
                var     values = order.PropertyFeaturesValues.Split(':');
                Boolean value;

                if (keys.Length == values.Length)
                {
                    for (var i = 0; i < keys.Length; i++)
                    {
                        if (amenities.ContainsKey(keys[i].ToLower()))
                        {
                            value = Boolean.Parse(values[i]);
                            amenities[keys[i].ToLower()].SetValue(result, value, null);

                            if (value)
                            {
                                result.AmenitiesStepCompleted = true;
                            }
                        }
                    }
                }
            }

            var orderReflectionProperties = order.GetType().GetProperties().ToDictionary(k => k.Name, v => v);

            for (var i = 0; i < result.Photos.Length; i++)
            {
                var key = "photo" + (i + 1).ToString();

                if (orderReflectionProperties.ContainsKey(key))
                {
                    result.Photos[i] = getStringValue(orderReflectionProperties[key].GetValue(order, null) as String);

                    if (result.Photos[i].HasText())
                    {
                        result.PhotoStepCompleted = true;
                    }
                }
            }

            if (result.FlyerType == FlyerTypes.Custom)
            {
                result.PhotoStepCompleted = false;

                if (result.Photos[0].HasText())
                {
                    result.UploadFlyerStepCompleted = true;
                }
            }

            Decimal @decimal;

            if (order.prop_price.HasText())
            {
                var split = order.prop_price.Split('|');

                if (split.Length > 0)
                {
                    result.PriceRent = getStringValue(split[0]);

                    if (split.Length > 1)
                    {
                        if (Decimal.TryParse(split[1], out @decimal))
                        {
                            result.Price = @decimal;
                        }

                        if (split.Length > 2)
                        {
                            result.PerArea = getStringValue(split[2]);

                            if (split.Length > 3)
                            {
                                result.RentPeriod = getStringValue(split[3]);
                            }
                        }
                    }
                }
            }

            if (result.PriceRent.HasText() || result.Price > 0 || result.PerArea.HasText() || result.RentPeriod.HasText())
            {
                result.PriceStepCompleted = true;
            }

            if (order.price_range_min.HasText())
            {
                if (Decimal.TryParse(order.price_range_min, out @decimal))
                {
                    result.PriceMin = @decimal;
                }
            }
            if (order.price_range_max.HasText())
            {
                if (Decimal.TryParse(order.price_range_max, out @decimal))
                {
                    result.PriceMax = @decimal;
                }
            }

            if (result.PriceMin > 0 || result.PriceMax > 0)
            {
                result.PriceRangeStepCompleted = true;
            }

            result.Layout = getStringValue(order.layout);
            result.Markup = getStringValue(order.markup);

            if (result.Markup.HasText())
            {
                result.ChooseFlyerStepCompleted = true;
            }

            result.MarketState = getStringValue(order.market_state);

            if (!order.delivery_date.Equals(default(DateTime)))
            {
                result.DeliveryDate = order.delivery_date;
            }

            String markets = null;

            if (getStringValue(order.market_county) != null)
            {
                result.MarketType = "county";
                markets           = order.market_county;
            }
            else if (getStringValue(order.market_association) != null)
            {
                result.MarketType = "association";
                markets           = order.market_association;
            }
            else if (getStringValue(order.market_msa) != null)
            {
                result.MarketType = "msa";
                markets           = order.market_msa;
            }

            if (result.MarketState.HasText() && result.MarketType.HasText() && markets.HasText())
            {
                result.SelectedPricesList = PricesList.FromParameters(order, result.MarketType, markets);
            }

            if (result.SelectedPricesList != null && result.SelectedPricesList.Items.Count > 0)
            {
                result.SelectMarketAreaStepCompleted = true;
            }

            return(result);
        }