public List <dynamic> getPropertyByProvince(searchProperty Province)
        {
            Boolean        flag       = false;
            var            properties = db.PROPERTies.ToList();
            List <dynamic> toReturn   = new List <dynamic>();


            if (Province.type == "" || Province.type == null)
            {
                flag = true;
            }
            else
            {
                int?id = Convert.ToInt32(Province.type);
                properties = properties.Where(ff => ff.PROPERTYTYPEID == id).ToList();
            }
            if (Province.minbed == 0)
            {
                flag = true;
            }
            else
            {
                int?id = Convert.ToInt32(Province.minbed);
                properties = properties.Where(ff => ff.NUMBED >= id).ToList();
            }


            if (Province.maxamount == 0)
            {
                flag = true;
            }
            else
            {
                properties = (from x in properties.AsEnumerable()
                              join y in db.RENTALAMOUNTs.AsEnumerable()
                              on x.PROPERTYID equals y.PROPERTYID
                              where y.AMOUNT <= Province.maxamount
                              select x).ToList();
            }
            if (Province.minamount == 0)
            {
                flag = true;
            }
            else
            {
                properties = (from x in properties.AsEnumerable()
                              join y in db.RENTALAMOUNTs.AsEnumerable()
                              on x.PROPERTYID equals y.PROPERTYID
                              where y.AMOUNT >= Province.minamount
                              select x).ToList();
            }
            if (Province.searchValue == null)
            {
                flag = true;
            }
            else
            {
                int?id   = Convert.ToInt32(Province.searchValue);
                var city = db.CITies.Where(xx => xx.PROVINCEID == id).ToList();
                if (city == null)
                {
                    dynamic setInvalid = new ExpandoObject();
                    setInvalid.isValid = "false";
                    toReturn.Add(setInvalid);
                }
                else
                {
                    var area = (from pd in city
                                join od in db.AREAs on pd.CITYID equals od.CITYID

                                select new
                    {
                        od
                    }).ToList();


                    var finalproperty = (from x in properties.AsEnumerable()
                                         join y in area.AsEnumerable()
                                         on x.AREAID equals y.od.AREAID
                                         where (x.PROPERTYSTATUSID == 1 && x.IsExtending == false) || (x.PROPERTYSTATUSID == 2 && x.IsExtending == false)

                                         select new PROPERTY
                    {
                        PROPERTYID = x.PROPERTYID,
                        ADDITIONALINFO = x.ADDITIONALINFO,
                        PROPERTYDESCRIPTION = x.PROPERTYDESCRIPTION,
                        ADDRESS = x.ADDRESS,
                        NUMBED = x.NUMBED,
                        PROPERTYTYPEID = x.PROPERTYTYPEID,
                        AREAID = x.AREAID,
                        AVAILABLEDATE = x.AVAILABLEDATE,
                    }).ToList();
                    foreach (PROPERTY property in finalproperty)
                    {
                        dynamic dynamicProperty = new ExpandoObject();

                        dynamicProperty.PROPERTYID          = property.PROPERTYID;
                        dynamicProperty.AMOUNT              = db.RENTALAMOUNTs.Where(hh => hh.PROPERTYID == property.PROPERTYID).Select(hh => hh.AMOUNT);
                        dynamicProperty.PROPERTYDESCRIPTION = property.PROPERTYDESCRIPTION;
                        dynamicProperty.ADDRESS             = property.ADDRESS;
                        dynamicProperty.AREAID              = db.AREAs.Where(vvs => vvs.AREAID == property.AREAID).Select(jj => jj.AREANAME).FirstOrDefault();
                        dynamicProperty.PROPERTYTYPEID      = db.PROPERTYTYPEs.Where(vvs => vvs.PROPERTYTYPEID == property.PROPERTYTYPEID).Select(jj => jj.PROPERTTYPEDESCRIPTION).FirstOrDefault();
                        dynamicProperty.NUMBED              = property.NUMBED;
                        dynamicProperty.AVAILABLEDATE       = Convert.ToDateTime(property.AVAILABLEDATE).AddDays(5);

                        var photo = db.PROPERTYPHOTOes.Where(hh => hh.PROPERTYID == property.PROPERTYID).Select(jj => jj.PHOTO).FirstOrDefault();

                        string filePath = HttpContext.Current.Server.MapPath("~/Images/" + photo);
                        try
                        {
                            using (FileStream fileStream = new FileStream(filePath, FileMode.Open))
                            {
                                using (var memoryStream = new MemoryStream())
                                {
                                    fileStream.CopyTo(memoryStream);
                                    Bitmap image = new Bitmap(1, 1);
                                    image.Save(memoryStream, ImageFormat.Png);

                                    byte[] byteImage    = memoryStream.ToArray();
                                    string base64String = Convert.ToBase64String(byteImage);
                                    dynamicProperty.PHOTO = "data:image/png;base64," + base64String;
                                }
                            }
                        }
                        catch
                        {
                            string filePat = HttpContext.Current.Server.MapPath("~/Images/notfound.png");

                            using (FileStream fileStream = new FileStream(filePat, FileMode.Open))
                            {
                                using (var memoryStream = new MemoryStream())
                                {
                                    fileStream.CopyTo(memoryStream);
                                    Bitmap image = new Bitmap(1, 1);
                                    image.Save(memoryStream, ImageFormat.Png);

                                    byte[] byteImage    = memoryStream.ToArray();
                                    string base64String = Convert.ToBase64String(byteImage);
                                    dynamicProperty.PHOTO = "data:image/png;base64," + base64String;
                                }
                            }
                        }



                        toReturn.Add(dynamicProperty);
                    }

                    if (finalproperty.Count == 0)
                    {
                        dynamic setInvalid = new ExpandoObject();
                        setInvalid.isValid = "false";
                        toReturn.Add(setInvalid);
                    }
                }
            }


            return(toReturn);
        }
Beispiel #2
0
 return(new SearchOptions(
            searchProperty: property ?? searchOptions.SearchProperty,