Пример #1
0
        public bool ClassifiedUpdate(OSDMap json, ref JsonRpcResponse response)
        {
            if (!json.ContainsKey("params"))
            {
                response.Error.Code    = ErrorCode.ParseError;
                response.Error.Message = "Error parsing classified update request";
                m_log.DebugFormat("Classified Update Request");
                return(false);
            }

            string            result = string.Empty;
            UserClassifiedAdd ad     = new UserClassifiedAdd();
            object            Ad     = (object)ad;

            OSD.DeserializeMembers(ref Ad, (OSDMap)json["params"]);
            if (Service.ClassifiedUpdate(ad, ref result))
            {
                response.Result = OSD.SerializeMembers(ad);
                return(true);
            }

            response.Error.Code    = ErrorCode.InternalError;
            response.Error.Message = string.Format("{0}", result);
            return(false);
        }
Пример #2
0
        public bool ClassifiedUpdate(OSDMap json, ref JsonRpcResponse response)
        {
            OSD tmpParams;

            if (!json.TryGetValue("params", out tmpParams) || !(tmpParams is OSDMap))
            {
                response.Error.Code    = ErrorCode.ParseError;
                response.Error.Message = "Error parsing classified update request";
                m_log.DebugFormat("Classified Update Request");
                return(false);
            }

            string            result = string.Empty;
            UserClassifiedAdd ad     = new UserClassifiedAdd();
            object            Ad     = ad;

            OSD.DeserializeMembers(ref Ad, (OSDMap)tmpParams);
            //If no maturity bits are set, set PG maturity bit. This works
            // around a viewer bug. It simplifies the ability to search ads
            // based on maturity level. 0x4e is bits 1 (old viewers mature), 2 (pg), 3 (Mature) and 6 (Adult).
            if ((ad.Flags & 0x4e) == 0)
            {
                ad.Flags |= 0x04;
            }

            if (Service.ClassifiedUpdate(ad, ref result))
            {
                response.Result = OSD.SerializeMembers(ad);
                return(true);
            }

            response.Error.Code    = ErrorCode.InternalError;
            response.Error.Message = string.Format("{0}", result);
            return(false);
        }
        /// <summary>
        /// Classifieds info update.
        /// </summary>
        /// <param name='queryclassifiedID'>
        /// Queryclassified I.
        /// </param>
        /// <param name='queryCategory'>
        /// Query category.
        /// </param>
        /// <param name='queryName'>
        /// Query name.
        /// </param>
        /// <param name='queryDescription'>
        /// Query description.
        /// </param>
        /// <param name='queryParcelID'>
        /// Query parcel I.
        /// </param>
        /// <param name='queryParentEstate'>
        /// Query parent estate.
        /// </param>
        /// <param name='querySnapshotID'>
        /// Query snapshot I.
        /// </param>
        /// <param name='queryGlobalPos'>
        /// Query global position.
        /// </param>
        /// <param name='queryclassifiedFlags'>
        /// Queryclassified flags.
        /// </param>
        /// <param name='queryclassifiedPrice'>
        /// Queryclassified price.
        /// </param>
        /// <param name='remoteClient'>
        /// Remote client.
        /// </param>
        public void ClassifiedInfoUpdate(UUID queryclassifiedID, uint queryCategory, string queryName, string queryDescription, UUID queryParcelID,
                                         uint queryParentEstate, UUID querySnapshotID, Vector3 queryGlobalPos, byte queryclassifiedFlags,
                                         int queryclassifiedPrice, IClientAPI remoteClient)
        {
            Scene        s     = (Scene)remoteClient.Scene;
            IMoneyModule money = s.RequestModuleInterface <IMoneyModule>();

            if (money != null)
            {
                if (!money.AmountCovered(remoteClient.AgentId, queryclassifiedPrice))
                {
                    remoteClient.SendAgentAlertMessage("You do not have enough money to create requested classified.", false);
                    return;
                }
                money.ApplyCharge(remoteClient.AgentId, queryclassifiedPrice, MoneyTransactionType.ClassifiedCharge);
            }

            UserClassifiedAdd ad = new UserClassifiedAdd();

            Vector3       pos  = remoteClient.SceneAgent.AbsolutePosition;
            ILandObject   land = s.LandChannel.GetLandObject(pos.X, pos.Y);
            ScenePresence p    = FindPresence(remoteClient.AgentId);

            string serverURI = string.Empty;

            GetUserProfileServerURI(remoteClient.AgentId, out serverURI);

            if (land == null)
            {
                ad.ParcelName = string.Empty;
            }
            else
            {
                ad.ParcelName = land.LandData.Name;
            }

            ad.CreatorId    = remoteClient.AgentId;
            ad.ClassifiedId = queryclassifiedID;
            ad.Category     = Convert.ToInt32(queryCategory);
            ad.Name         = queryName;
            ad.Description  = queryDescription;
            ad.ParentEstate = Convert.ToInt32(queryParentEstate);
            ad.SnapshotId   = querySnapshotID;
            ad.SimName      = remoteClient.Scene.RegionInfo.RegionName;
            ad.GlobalPos    = queryGlobalPos.ToString();
            ad.Flags        = queryclassifiedFlags;
            ad.Price        = queryclassifiedPrice;
            ad.ParcelId     = p.currentParcelUUID;

            object Ad = ad;

            OSD.SerializeMembers(Ad);

            if (!rpc.JsonRpcRequest(ref Ad, "classified_update", serverURI, UUID.Random().ToString()))
            {
                remoteClient.SendAgentAlertMessage(
                    "Error updating classified", false);
                return;
            }
        }
Пример #4
0
        public bool ClassifiedInfoRequest(ref UserClassifiedAdd ad, ref string result)
        {
            if (ProfilesData.GetClassifiedInfo(ref ad, ref result))
            {
                return(true);
            }

            return(false);
        }
Пример #5
0
 public bool ClassifiedUpdate(UserClassifiedAdd ad, ref string result)
 {
     if (!ProfilesData.UpdateClassifiedRecord(ad, ref result))
     {
         return(false);
     }
     result = "success";
     return(true);
 }
        public void ClassifiedInfoRequest(UUID queryClassifiedID, IClientAPI remoteClient)
        {
            UUID target          = remoteClient.AgentId;
            UserClassifiedAdd ad = new UserClassifiedAdd();

            ad.ClassifiedId = queryClassifiedID;

            lock (m_classifiedCache)
            {
                if (m_classifiedCache.ContainsKey(queryClassifiedID))
                {
                    target = m_classifiedCache[queryClassifiedID];

                    m_classifiedInterest[queryClassifiedID]--;

                    if (m_classifiedInterest[queryClassifiedID] == 0)
                    {
                        m_classifiedInterest.Remove(queryClassifiedID);
                        m_classifiedCache.Remove(queryClassifiedID);
                    }
                }
            }

            string serverURI = string.Empty;

            GetUserProfileServerURI(target, out serverURI);

            object Ad = (object)ad;

            if (!rpc.JsonRpcRequest(ref Ad, "classifieds_info_query", serverURI, UUID.Random().ToString()))
            {
                remoteClient.SendAgentAlertMessage(
                    "Error getting classified info", false);
                return;
            }
            ad = (UserClassifiedAdd)Ad;

            if (ad.CreatorId == UUID.Zero)
            {
                return;
            }

            Vector3 globalPos = new Vector3();

            Vector3.TryParse(ad.GlobalPos, out globalPos);

            remoteClient.SendClassifiedInfoReply(ad.ClassifiedId, ad.CreatorId, (uint)ad.CreationDate, (uint)ad.ExpirationDate,
                                                 (uint)ad.Category, ad.Name, ad.Description, ad.ParcelId, (uint)ad.ParentEstate,
                                                 ad.SnapshotId, ad.SimName, globalPos, ad.ParcelName, ad.Flags, ad.Price);
        }
Пример #7
0
 public bool GetClassifiedInfo(ref UserClassifiedAdd ad, ref string result)
 {
     string query = string.Empty;
     
     query += "SELECT * FROM classifieds WHERE ";
     query += "classifieduuid = ?AdId";
     
     try
     {
         using (MySqlConnection dbcon = new MySqlConnection(ConnectionString))
         {
             dbcon.Open();
             using (MySqlCommand cmd = new MySqlCommand(query, dbcon))
             {
                 cmd.Parameters.AddWithValue("?AdId", ad.ClassifiedId.ToString());
                 
                 using (MySqlDataReader reader = cmd.ExecuteReader())
                 {
                     if(reader.Read ())
                     {
                         ad.CreatorId = new UUID(reader.GetGuid("creatoruuid"));
                         ad.ParcelId = new UUID(reader.GetGuid("parceluuid"));
                         ad.SnapshotId = new UUID(reader.GetGuid("snapshotuuid"));
                         ad.CreationDate = Convert.ToInt32(reader["creationdate"]);
                         ad.ExpirationDate = Convert.ToInt32(reader["expirationdate"]);
                         ad.ParentEstate = Convert.ToInt32(reader["parentestate"]);
                         ad.Flags = (byte)reader.GetUInt32("classifiedflags");
                         ad.Category = reader.GetInt32("category");
                         ad.Price = reader.GetInt16("priceforlisting");
                         ad.Name = reader.GetString("name");
                         ad.Description = reader.GetString("description");
                         ad.SimName = reader.GetString("simname");
                         ad.GlobalPos = reader.GetString("posglobal");
                         ad.ParcelName = reader.GetString("parcelname");
                         
                     }
                 }
             }
             dbcon.Close();
         }
     }
     catch (Exception e)
     {
         m_log.DebugFormat("[PROFILES_DATA]" +
                          ": GetPickInfo exception {0}", e.Message);
     }
     return true;
 }
Пример #8
0
        /// <summary>
        /// Classifieds info update.
        /// </summary>
        /// <param name='queryclassifiedID'>
        /// Queryclassified I.
        /// </param>
        /// <param name='queryCategory'>
        /// Query category.
        /// </param>
        /// <param name='queryName'>
        /// Query name.
        /// </param>
        /// <param name='queryDescription'>
        /// Query description.
        /// </param>
        /// <param name='queryParcelID'>
        /// Query parcel I.
        /// </param>
        /// <param name='queryParentEstate'>
        /// Query parent estate.
        /// </param>
        /// <param name='querySnapshotID'>
        /// Query snapshot I.
        /// </param>
        /// <param name='queryGlobalPos'>
        /// Query global position.
        /// </param>
        /// <param name='queryclassifiedFlags'>
        /// Queryclassified flags.
        /// </param>
        /// <param name='queryclassifiedPrice'>
        /// Queryclassified price.
        /// </param>
        /// <param name='remoteClient'>
        /// Remote client.
        /// </param>
        public void ClassifiedInfoUpdate(UUID queryclassifiedID, uint queryCategory, string queryName, string queryDescription, UUID queryParcelID,
                                         uint queryParentEstate, UUID querySnapshotID, Vector3 queryGlobalPos, byte queryclassifiedFlags,
                                         int queryclassifiedPrice, IClientAPI remoteClient)
        {
            UserClassifiedAdd ad = new UserClassifiedAdd();

            Scene         s    = (Scene)remoteClient.Scene;
            Vector3       pos  = remoteClient.SceneAgent.AbsolutePosition;
            ILandObject   land = s.LandChannel.GetLandObject(pos.X, pos.Y);
            ScenePresence p    = FindPresence(remoteClient.AgentId);
//            Vector3 avaPos = p.AbsolutePosition;

            string serverURI = string.Empty;

            GetUserProfileServerURI(remoteClient.AgentId, out serverURI);

            if (land == null)
            {
                ad.ParcelName = string.Empty;
            }
            else
            {
                ad.ParcelName = land.LandData.Name;
            }

            ad.CreatorId    = remoteClient.AgentId;
            ad.ClassifiedId = queryclassifiedID;
            ad.Category     = Convert.ToInt32(queryCategory);
            ad.Name         = queryName;
            ad.Description  = queryDescription;
            ad.ParentEstate = Convert.ToInt32(queryParentEstate);
            ad.SnapshotId   = querySnapshotID;
            ad.SimName      = remoteClient.Scene.RegionInfo.RegionName;
            ad.GlobalPos    = queryGlobalPos.ToString();
            ad.Flags        = queryclassifiedFlags;
            ad.Price        = queryclassifiedPrice;
            ad.ParcelId     = p.currentParcelUUID;

            object Ad = ad;

            OSD.SerializeMembers(Ad);

            if (!JsonRpcRequest(ref Ad, "classified_update", serverURI, UUID.Random().ToString()))
            {
                remoteClient.SendAgentAlertMessage(
                    "Error updating classified", false);
            }
        }
        public bool GetClassifiedInfo(ref UserClassifiedAdd ad, ref string result)
        {
            string query = string.Empty;

            query += "SELECT * FROM classifieds WHERE ";
            query += "classifieduuid = :AdId";

            try
            {
                using (NpgsqlConnection dbcon = new NpgsqlConnection(ConnectionString))
                {
                    dbcon.Open();
                    using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
                    {
                        cmd.Parameters.Add(m_database.CreateParameter("AdId", ad.ClassifiedId));

                        using (NpgsqlDataReader reader = cmd.ExecuteReader())
                        {
                            if (reader.Read())
                            {
                                ad.CreatorId      = DBGuid.FromDB(reader["creatoruuid"]);
                                ad.ParcelId       = DBGuid.FromDB(reader["parceluuid"]);
                                ad.SnapshotId     = DBGuid.FromDB(reader["snapshotuuid"]);
                                ad.CreationDate   = Convert.ToInt32(reader["creationdate"]);
                                ad.ExpirationDate = Convert.ToInt32(reader["expirationdate"]);
                                ad.ParentEstate   = Convert.ToInt32(reader["parentestate"]);
                                ad.Flags          = (byte)Convert.ToInt16(reader["classifiedflags"]);
                                ad.Category       = Convert.ToInt32(reader["category"]);
                                ad.Price          = Convert.ToInt16(reader["priceforlisting"]);
                                ad.Name           = reader["name"].ToString();
                                ad.Description    = reader["description"].ToString();
                                ad.SimName        = reader["simname"].ToString();
                                ad.GlobalPos      = reader["posglobal"].ToString();
                                ad.ParcelName     = reader["parcelname"].ToString();
                            }
                        }
                    }
                    dbcon.Close();
                }
            }
            catch (Exception e)
            {
                m_log.Error("[PROFILES_DATA]: GetClassifiedInfo exception ", e);
            }

            return(true);
        }
Пример #10
0
        public bool GetClassifiedInfo(ref UserClassifiedAdd ad, ref string result)
        {
            IDataReader reader = null;
            string      query  = string.Empty;

            query += "SELECT * FROM classifieds WHERE ";
            query += "classifieduuid = :AdId";

            try
            {
                using (SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand())
                {
                    cmd.CommandText = query;
                    cmd.Parameters.AddWithValue(":AdId", ad.ClassifiedId.ToString());

                    using (reader = cmd.ExecuteReader())
                    {
                        if (reader.Read())
                        {
                            ad.CreatorId      = new UUID(reader["creatoruuid"].ToString());
                            ad.ParcelId       = new UUID(reader["parceluuid"].ToString());
                            ad.SnapshotId     = new UUID(reader["snapshotuuid"].ToString());
                            ad.CreationDate   = Convert.ToInt32(reader["creationdate"]);
                            ad.ExpirationDate = Convert.ToInt32(reader["expirationdate"]);
                            ad.ParentEstate   = Convert.ToInt32(reader["parentestate"]);
                            ad.Flags          = (byte)Convert.ToUInt32(reader["classifiedflags"]);
                            ad.Category       = Convert.ToInt32(reader["category"]);
                            ad.Price          = Convert.ToInt16(reader["priceforlisting"]);
                            ad.Name           = reader["name"].ToString();
                            ad.Description    = reader["description"].ToString();
                            ad.SimName        = reader["simname"].ToString();
                            ad.GlobalPos      = reader["posglobal"].ToString();
                            ad.ParcelName     = reader["parcelname"].ToString();
                        }
                    }
                }
            }
            catch (Exception e)
            {
                m_log.DebugFormat("[PROFILES_DATA]" +
                                  ": GetPickInfo exception {0}", e.Message);
            }
            return(true);
        }
        public bool UpdateClassifiedRecord(UserClassifiedAdd ad, ref string result)
        {
            string query = string.Empty;


            query += "INSERT INTO classifieds (";
            query += "`classifieduuid`,";
            query += "`creatoruuid`,";
            query += "`creationdate`,";
            query += "`expirationdate`,";
            query += "`category`,";
            query += "`name`,";
            query += "`description`,";
            query += "`parceluuid`,";
            query += "`parentestate`,";
            query += "`snapshotuuid`,";
            query += "`simname`,";
            query += "`posglobal`,";
            query += "`parcelname`,";
            query += "`classifiedflags`,";
            query += "`priceforlisting`) ";
            query += "VALUES (";
            query += "?ClassifiedId,";
            query += "?CreatorId,";
            query += "?CreatedDate,";
            query += "?ExpirationDate,";
            query += "?Category,";
            query += "?Name,";
            query += "?Description,";
            query += "?ParcelId,";
            query += "?ParentEstate,";
            query += "?SnapshotId,";
            query += "?SimName,";
            query += "?GlobalPos,";
            query += "?ParcelName,";
            query += "?Flags,";
            query += "?ListingPrice ) ";
            query += "ON DUPLICATE KEY UPDATE ";
            query += "category=?Category, ";
            query += "expirationdate=?ExpirationDate, ";
            query += "name=?Name, ";
            query += "description=?Description, ";
            query += "parentestate=?ParentEstate, ";
            query += "posglobal=?GlobalPos, ";
            query += "parcelname=?ParcelName, ";
            query += "classifiedflags=?Flags, ";
            query += "priceforlisting=?ListingPrice, ";
            query += "snapshotuuid=?SnapshotId";

            if (string.IsNullOrEmpty(ad.ParcelName))
            {
                ad.ParcelName = "Unknown";
            }
            if (ad.ParcelId == null)
            {
                ad.ParcelId = UUID.Zero;
            }
            if (string.IsNullOrEmpty(ad.Description))
            {
                ad.Description = "No Description";
            }

            DateTime epoch    = new DateTime(1970, 1, 1);
            DateTime now      = DateTime.Now;
            TimeSpan epochnow = now - epoch;
            TimeSpan duration;
            DateTime expiration;
            TimeSpan epochexp;

            if (ad.Flags == 2)
            {
                duration   = new TimeSpan(7, 0, 0, 0);
                expiration = now.Add(duration);
                epochexp   = expiration - epoch;
            }
            else
            {
                duration   = new TimeSpan(365, 0, 0, 0);
                expiration = now.Add(duration);
                epochexp   = expiration - epoch;
            }
            ad.CreationDate   = (int)epochnow.TotalSeconds;
            ad.ExpirationDate = (int)epochexp.TotalSeconds;

            try
            {
                using (MySqlConnection dbcon = new MySqlConnection(ConnectionString))
                {
                    dbcon.Open();
                    using (MySqlCommand cmd = new MySqlCommand(query, dbcon))
                    {
                        cmd.Parameters.AddWithValue("?ClassifiedId", ad.ClassifiedId.ToString());
                        cmd.Parameters.AddWithValue("?CreatorId", ad.CreatorId.ToString());
                        cmd.Parameters.AddWithValue("?CreatedDate", ad.CreationDate.ToString());
                        cmd.Parameters.AddWithValue("?ExpirationDate", ad.ExpirationDate.ToString());
                        cmd.Parameters.AddWithValue("?Category", ad.Category.ToString());
                        cmd.Parameters.AddWithValue("?Name", ad.Name.ToString());
                        cmd.Parameters.AddWithValue("?Description", ad.Description.ToString());
                        cmd.Parameters.AddWithValue("?ParcelId", ad.ParcelId.ToString());
                        cmd.Parameters.AddWithValue("?ParentEstate", ad.ParentEstate.ToString());
                        cmd.Parameters.AddWithValue("?SnapshotId", ad.SnapshotId.ToString());
                        cmd.Parameters.AddWithValue("?SimName", ad.SimName.ToString());
                        cmd.Parameters.AddWithValue("?GlobalPos", ad.GlobalPos.ToString());
                        cmd.Parameters.AddWithValue("?ParcelName", ad.ParcelName.ToString());
                        cmd.Parameters.AddWithValue("?Flags", ad.Flags.ToString());
                        cmd.Parameters.AddWithValue("?ListingPrice", ad.Price.ToString());

                        cmd.ExecuteNonQuery();
                    }
                }
            }
            catch (Exception e)
            {
                m_log.DebugFormat("[PROFILES_DATA]" +
                                  ": ClassifiedesUpdate exception {0}", e.Message);
                result = e.Message;
                return(false);
            }
            return(true);
        }
        public bool UpdateClassifiedRecord(UserClassifiedAdd ad, ref string result)
        {
            string query = string.Empty;

            query = @"WITH upsert AS (
                        UPDATE classifieds SET
                            classifieduuid = :ClassifiedId, creatoruuid = :CreatorId, creationdate = :CreatedDate,
                            expirationdate = :ExpirationDate,category =:Category, name = :Name, description = :Description,
                            parceluuid = :ParcelId, parentestate = :ParentEstate, snapshotuuid = :SnapshotId,
                            simname = :SimName, posglobal = :GlobalPos, parcelname = :ParcelName, classifiedflags = :Flags,
                            priceforlisting = :ListingPrice
                        RETURNING * )
                      INSERT INTO classifieds (classifieduuid,creatoruuid,creationdate,expirationdate,category,name,
                            description,parceluuid,parentestate,snapshotuuid,simname,posglobal,parcelname,classifiedflags,
                            priceforlisting)
                      SELECT
                            :ClassifiedId,:CreatorId,:CreatedDate,:ExpirationDate,:Category,:Name,:Description,
                            :ParcelId,:ParentEstate,:SnapshotId,:SimName,:GlobalPos,:ParcelName,:Flags,:ListingPrice
                      WHERE NOT EXISTS (
                        SELECT * FROM upsert )";

            if (string.IsNullOrEmpty(ad.ParcelName))
            {
                ad.ParcelName = "Unknown";
            }
            if (ad.ParcelId == null)
            {
                ad.ParcelId = UUID.Zero;
            }
            if (string.IsNullOrEmpty(ad.Description))
            {
                ad.Description = "No Description";
            }

            DateTime epoch    = new DateTime(1970, 1, 1);
            DateTime now      = DateTime.Now;
            TimeSpan epochnow = now - epoch;
            TimeSpan duration;
            DateTime expiration;
            TimeSpan epochexp;

            if (ad.Flags == 2)
            {
                duration   = new TimeSpan(7, 0, 0, 0);
                expiration = now.Add(duration);
                epochexp   = expiration - epoch;
            }
            else
            {
                duration   = new TimeSpan(365, 0, 0, 0);
                expiration = now.Add(duration);
                epochexp   = expiration - epoch;
            }
            ad.CreationDate   = (int)epochnow.TotalSeconds;
            ad.ExpirationDate = (int)epochexp.TotalSeconds;

            try
            {
                using (NpgsqlConnection dbcon = new NpgsqlConnection(ConnectionString))
                {
                    dbcon.Open();
                    using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
                    {
                        cmd.Parameters.Add(m_database.CreateParameter("ClassifiedId", ad.ClassifiedId));
                        cmd.Parameters.Add(m_database.CreateParameter("CreatorId", ad.CreatorId));
                        cmd.Parameters.Add(m_database.CreateParameter("CreatedDate", (int)ad.CreationDate));
                        cmd.Parameters.Add(m_database.CreateParameter("ExpirationDate", (int)ad.ExpirationDate));
                        cmd.Parameters.Add(m_database.CreateParameter("Category", ad.Category.ToString()));
                        cmd.Parameters.Add(m_database.CreateParameter("Name", ad.Name.ToString()));
                        cmd.Parameters.Add(m_database.CreateParameter("Description", ad.Description.ToString()));
                        cmd.Parameters.Add(m_database.CreateParameter("ParcelId", ad.ParcelId));
                        cmd.Parameters.Add(m_database.CreateParameter("ParentEstate", (int)ad.ParentEstate));
                        cmd.Parameters.Add(m_database.CreateParameter("SnapshotId", ad.SnapshotId));
                        cmd.Parameters.Add(m_database.CreateParameter("SimName", ad.SimName.ToString()));
                        cmd.Parameters.Add(m_database.CreateParameter("GlobalPos", ad.GlobalPos.ToString()));
                        cmd.Parameters.Add(m_database.CreateParameter("ParcelName", ad.ParcelName.ToString()));
                        cmd.Parameters.Add(m_database.CreateParameter("Flags", (int)Convert.ToInt32(ad.Flags)));
                        cmd.Parameters.Add(m_database.CreateParameter("ListingPrice", (int)Convert.ToInt32(ad.Price)));

                        cmd.ExecuteNonQuery();
                    }
                }
            }
            catch (Exception e)
            {
                m_log.Error("[PROFILES_DATA]: ClassifiedsUpdate exception ", e);
                result = e.Message;
                return(false);
            }

            return(true);
        }
Пример #13
0
        public bool UpdateClassifiedRecord(UserClassifiedAdd ad, ref string result)
        {
            string query = @"INSERT INTO classifieds ( ""classifieduuid"",""creatoruuid"", ""creationdate"", ""expirationdate"", ""category"",
                                    ""name"", ""description"", ""parceluuid"", ""parentestate"", ""snapshotuuid"", ""simname"",
                                    ""posglobal"", ""parcelname"", ""classifiedflags"", ""priceforlisting"")
                              Select :ClassifiedId, :CreatorId, :CreatedDate, :ExpirationDate, :Category,
                                     :Name, :Description, :ParcelId, :ParentEstate, :SnapshotId, :SimName 
                                     :GlobalPos, :ParcelName, :Flags, :ListingPrice 
                                Where not exists( Select ""classifieduuid"" from classifieds where ""classifieduuid"" = :ClassifiedId );

                           update classifieds
                              set category =:Category, 
                                  expirationdate = :ExpirationDate, 
                                  name = :Name, 
                                  description  = :Description, 
                                  parentestate = :ParentEstate, 
                                  posglobal       = :GlobalPos, 
                                  parcelname      = :ParcelName,
                                  classifiedflags = :Flags, 
                                  priceforlisting = :ListingPrice, 
                                  snapshotuuid    = :SnapshotId
                            where classifieduuid = :ClassifiedId ;
                                ";

            if (string.IsNullOrEmpty(ad.ParcelName))
            {
                ad.ParcelName = "Unknown";
            }
            if (ad.ParcelId == null)
            {
                ad.ParcelId = UUID.Zero;
            }
            if (string.IsNullOrEmpty(ad.Description))
            {
                ad.Description = "No Description";
            }

            DateTime epoch    = new DateTime(1970, 1, 1);
            DateTime now      = DateTime.Now;
            TimeSpan epochnow = now - epoch;
            TimeSpan duration;
            DateTime expiration;
            TimeSpan epochexp;

            if (ad.Flags == 2)
            {
                duration   = new TimeSpan(7, 0, 0, 0);
                expiration = now.Add(duration);
                epochexp   = expiration - epoch;
            }
            else
            {
                duration   = new TimeSpan(365, 0, 0, 0);
                expiration = now.Add(duration);
                epochexp   = expiration - epoch;
            }
            ad.CreationDate   = (int)epochnow.TotalSeconds;
            ad.ExpirationDate = (int)epochexp.TotalSeconds;

            try
            {
                using (NpgsqlConnection dbcon = new NpgsqlConnection(ConnectionString))
                {
                    dbcon.Open();
                    using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
                    {
                        cmd.Parameters.AddWithValue("ClassifiedId", ad.ClassifiedId.ToString());
                        cmd.Parameters.AddWithValue("CreatorId", ad.CreatorId.ToString());
                        cmd.Parameters.AddWithValue("CreatedDate", ad.CreationDate.ToString());
                        cmd.Parameters.AddWithValue("ExpirationDate", ad.ExpirationDate.ToString());
                        cmd.Parameters.AddWithValue("Category", ad.Category.ToString());
                        cmd.Parameters.AddWithValue("Name", ad.Name.ToString());
                        cmd.Parameters.AddWithValue("Description", ad.Description.ToString());
                        cmd.Parameters.AddWithValue("ParcelId", ad.ParcelId.ToString());
                        cmd.Parameters.AddWithValue("ParentEstate", ad.ParentEstate.ToString());
                        cmd.Parameters.AddWithValue("SnapshotId", ad.SnapshotId.ToString());
                        cmd.Parameters.AddWithValue("SimName", ad.SimName.ToString());
                        cmd.Parameters.AddWithValue("GlobalPos", ad.GlobalPos.ToString());
                        cmd.Parameters.AddWithValue("ParcelName", ad.ParcelName.ToString());
                        cmd.Parameters.AddWithValue("Flags", ad.Flags.ToString());
                        cmd.Parameters.AddWithValue("ListingPrice", ad.Price.ToString());

                        cmd.ExecuteNonQuery();
                    }
                }
            }
            catch (Exception e)
            {
                m_log.DebugFormat("[PROFILES_DATA]" +
                                  ": ClassifiedesUpdate exception {0}", e.Message);
                result = e.Message;
                return(false);
            }
            return(true);
        }
Пример #14
0
        public bool UpdateClassifiedRecord(UserClassifiedAdd ad, ref string result)
        {
            string query = string.Empty;

            query += "INSERT OR REPLACE INTO classifieds (";
            query += "`classifieduuid`,";
            query += "`creatoruuid`,";
            query += "`creationdate`,";
            query += "`expirationdate`,";
            query += "`category`,";
            query += "`name`,";
            query += "`description`,";
            query += "`parceluuid`,";
            query += "`parentestate`,";
            query += "`snapshotuuid`,";
            query += "`simname`,";
            query += "`posglobal`,";
            query += "`parcelname`,";
            query += "`classifiedflags`,";
            query += "`priceforlisting`) ";
            query += "VALUES (";
            query += ":ClassifiedId,";
            query += ":CreatorId,";
            query += ":CreatedDate,";
            query += ":ExpirationDate,";
            query += ":Category,";
            query += ":Name,";
            query += ":Description,";
            query += ":ParcelId,";
            query += ":ParentEstate,";
            query += ":SnapshotId,";
            query += ":SimName,";
            query += ":GlobalPos,";
            query += ":ParcelName,";
            query += ":Flags,";
            query += ":ListingPrice ) ";

            if (string.IsNullOrEmpty(ad.ParcelName))
            {
                ad.ParcelName = "Unknown";
            }
            if (ad.ParcelId == null)
            {
                ad.ParcelId = UUID.Zero;
            }
            if (string.IsNullOrEmpty(ad.Description))
            {
                ad.Description = "No Description";
            }

            DateTime epoch    = new DateTime(1970, 1, 1);
            DateTime now      = DateTime.Now;
            TimeSpan epochnow = now - epoch;
            TimeSpan duration;
            DateTime expiration;
            TimeSpan epochexp;

            if (ad.Flags == 2)
            {
                duration   = new TimeSpan(7, 0, 0, 0);
                expiration = now.Add(duration);
                epochexp   = expiration - epoch;
            }
            else
            {
                duration   = new TimeSpan(365, 0, 0, 0);
                expiration = now.Add(duration);
                epochexp   = expiration - epoch;
            }
            ad.CreationDate   = (int)epochnow.TotalSeconds;
            ad.ExpirationDate = (int)epochexp.TotalSeconds;

            try
            {
                using (SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand())
                {
                    cmd.CommandText = query;
                    cmd.Parameters.AddWithValue(":ClassifiedId", ad.ClassifiedId.ToString());
                    cmd.Parameters.AddWithValue(":CreatorId", ad.CreatorId.ToString());
                    cmd.Parameters.AddWithValue(":CreatedDate", ad.CreationDate.ToString());
                    cmd.Parameters.AddWithValue(":ExpirationDate", ad.ExpirationDate.ToString());
                    cmd.Parameters.AddWithValue(":Category", ad.Category.ToString());
                    cmd.Parameters.AddWithValue(":Name", ad.Name.ToString());
                    cmd.Parameters.AddWithValue(":Description", ad.Description.ToString());
                    cmd.Parameters.AddWithValue(":ParcelId", ad.ParcelId.ToString());
                    cmd.Parameters.AddWithValue(":ParentEstate", ad.ParentEstate.ToString());
                    cmd.Parameters.AddWithValue(":SnapshotId", ad.SnapshotId.ToString());
                    cmd.Parameters.AddWithValue(":SimName", ad.SimName.ToString());
                    cmd.Parameters.AddWithValue(":GlobalPos", ad.GlobalPos.ToString());
                    cmd.Parameters.AddWithValue(":ParcelName", ad.ParcelName.ToString());
                    cmd.Parameters.AddWithValue(":Flags", ad.Flags.ToString());
                    cmd.Parameters.AddWithValue(":ListingPrice", ad.Price.ToString());

                    cmd.ExecuteNonQuery();
                }
            }
            catch (Exception e)
            {
                m_log.ErrorFormat("[PROFILES_DATA]" +
                                  ": ClassifiedesUpdate exception {0}", e.Message);
                result = e.Message;
                return(false);
            }
            return(true);
        }