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); }
return(new SearchOptions( searchProperty: property ?? searchOptions.SearchProperty,