Inheritance: WhiteCore.Framework.Modules.IDataTransferable
        public EventData CreateEvent(UUID creator, UUID regionID, UUID parcelID, DateTime date, uint cover,
            EventFlags maturity, uint flags, uint duration, Vector3 localPos, string name,
            string description, string category)
        {
            object remoteValue = DoRemote(creator, regionID, parcelID, date, cover, maturity, flags, duration, localPos,
                                          name, description, category);
            if (remoteValue != null || m_doRemoteOnly)
                return (EventData) remoteValue;

            IRegionData regiondata = Framework.Utilities.DataManager.RequestPlugin<IRegionData>();
            if (regiondata == null)
            {
                return null;
            }

            GridRegion region = regiondata.Get(regionID, null);
            if (region == null)
            {
                return null;
            }

            EventData eventData = new EventData
                                      {
                                          eventID = GetMaxEventID() + 1,
                                          creator = creator.ToString(),
                                          simName = region.RegionName,
                                          date = date.ToString(new DateTimeFormatInfo()),
                                          dateUTC = (uint) Util.ToUnixTime(date),
                                          amount = cover,
                                          cover = cover,
                                          maturity = (int) maturity,
                                          eventFlags = flags | (uint) maturity,
                                          duration = duration,
                                          globalPos = new Vector3(
                                              region.RegionLocX + localPos.X,
                                              region.RegionLocY + localPos.Y,
                                              region.RegionLocZ + localPos.Z
                                              ),
                                          regionPos = localPos,
                                          name = name,
                                          description = description,
                                          category = category
                                      };

            Dictionary<string, object> row = new Dictionary<string, object>(15);
            row["EID"] = eventData.eventID;
            row["creator"] = creator.ToString();
            row["region"] = regionID.ToString();
            row["parcel"] = parcelID.ToString();
            row["date"] = date.ToString("s");
            row["cover"] = eventData.cover;
            row["maturity"] = (uint) maturity;
            row["flags"] = flags;
            row["duration"] = duration;
            row["localPosX"] = localPos.X;
            row["localPosY"] = localPos.Y;
            row["localPosZ"] = localPos.Z;
            row["name"] = name;
            row["description"] = description;
            row["category"] = category;

            GD.Insert("asevents", row);

            return eventData;
        }
        private static List<EventData> Query2EventData(List<string> RetVal)
        {
            List<EventData> Events = new List<EventData>();
            IRegionData regiondata = Framework.Utilities.DataManager.RequestPlugin<IRegionData>();
            if (RetVal.Count%16 != 0 || regiondata == null)
            {
                return Events;
            }

            for (int i = 0; i < RetVal.Count; i += 16)
            {
                EventData data = new EventData();

                GridRegion region = regiondata.Get(UUID.Parse(RetVal[2]), null);
                if (region == null)
                {
                    continue;
                }
                data.simName = region.RegionName;

                data.eventID = Convert.ToUInt32(RetVal[i]);
                data.creator = RetVal[i + 1];

                //Parse the time out for the viewer
                DateTime date = DateTime.Parse(RetVal[i + 4]);
                data.date = date.ToString(new DateTimeFormatInfo());
                data.dateUTC = (uint) Util.ToUnixTime(date);

                data.cover = data.amount = Convert.ToUInt32(RetVal[i + 5]);
                data.maturity = Convert.ToInt32(RetVal[i + 6]);
                data.eventFlags = Convert.ToUInt32(RetVal[i + 7]);
                data.duration = Convert.ToUInt32(RetVal[i + 8]);

                data.regionPos = new Vector3(
                    float.Parse(RetVal[i + 9]),
                    float.Parse(RetVal[i + 10]),
                    float.Parse(RetVal[i + 11])
                    );

                data.globalPos = new Vector3(
                    region.RegionLocX + data.regionPos.X,
                    region.RegionLocY + data.regionPos.Y,
                    region.RegionLocZ + data.regionPos.Z
                    );

                data.name = RetVal[i + 12];
                data.description = RetVal[i + 13];
                data.category = RetVal[i + 14];

                Events.Add(data);
            }

            return Events;
        }
        public EventData CreateEvent(UUID creator, UUID regionID, UUID parcelID, DateTime date, uint cover,
                                     EventFlags maturity, uint flags, uint duration, Vector3 localPos, string name,
                                     string description, string category)
        {
            if (m_doRemoteOnly) {
                object remoteValue = DoRemote (creator, regionID, parcelID, date, cover, maturity, flags, duration, localPos,
                                          name, description, category);
                return remoteValue != null ? (EventData)remoteValue : null;
            }

            IRegionData regiondata = Framework.Utilities.DataManager.RequestPlugin<IRegionData>();
            if (regiondata == null)
                return null;

            GridRegion region = regiondata.Get(regionID, null);
            if (region == null)
                return null;

            // create the event
            EventData eventData = new EventData ();
            eventData.eventID = GetMaxEventID () + 1;
            eventData.creator = creator.ToString();
            eventData.simName = region.RegionName;
            eventData.date = date.ToString(new DateTimeFormatInfo());
            eventData.dateUTC = (uint) Util.ToUnixTime(date);
            eventData.amount = cover;
            eventData.cover = cover;
            eventData.maturity = (int) maturity;
            eventData.eventFlags = flags | (uint) maturity;
            eventData.duration = duration;
            eventData.globalPos = new Vector3(
                region.RegionLocX + localPos.X,
                region.RegionLocY + localPos.Y,
                region.RegionLocZ + localPos.Z);
            eventData.regionPos = localPos;
            eventData.name = name;
            eventData.description = description;
            eventData.category = category;
            eventData.regionId = regionID.ToString();
            eventData.parcelId = parcelID.ToString();

            Dictionary<string, object> row = new Dictionary<string, object>(15);
            row["EID"] = eventData.eventID;
            row["creator"] = creator.ToString();
            row["region"] = regionID.ToString();
            row["parcel"] = parcelID.ToString();
            row["date"] = date.ToString("s");       
            row["cover"] = eventData.cover;
            row["maturity"] = Util.ConvertEventMaturityToDBMaturity (maturity);      // PG = 1, M == 2, A == 4
            row["flags"] = flags;                   // region maturity flags
            row["duration"] = duration;
            row["localPosX"] = localPos.X;
            row["localPosY"] = localPos.Y;
            row["localPosZ"] = localPos.Z;
            row["name"] = name;
            row["description"] = description;
            row["category"] = category;

            GD.Insert(m_eventInfoTable, row);

            return eventData;
        }
        public bool UpdateAddEvent (EventData eventData)
        {
            if (m_doRemoteOnly) {
                object remoteValue = DoRemote (eventData);
                return (bool)remoteValue;
            }

            // delete this event it it exists 
            QueryFilter filter = new QueryFilter ();
            filter.andFilters ["EID"] = eventData.eventID;
            GD.Delete (m_eventInfoTable, filter);

            // add the event 
            Dictionary<string, object> row = new Dictionary<string, object> (15);
            row ["EID"] = GetMaxEventID () + 1; 
            row ["creator"] = eventData.creator;
            row ["region"] = eventData.regionId;
            row ["parcel"] = eventData.parcelId;
            row ["date"] = eventData.date;                    
            row ["cover"] = eventData.cover;
            row ["maturity"] = Util.ConvertEventMaturityToDBMaturity ((EventFlags) eventData.maturity);      // PG = 1, M == 2, A == 4
            row ["flags"] = eventData.eventFlags;             // region maturity flags
            row ["duration"] = eventData.duration;
            row ["localPosX"] = eventData.regionPos.X;
            row ["localPosY"] = eventData.regionPos.Y;
            row ["localPosZ"] = eventData.regionPos.Z;
            row ["name"] = eventData.name;
            row ["description"] = eventData.description;
            row ["category"] = eventData.category;

            try {
                GD.Insert (m_eventInfoTable, row);
            } catch {
                return false;
            }

            // assume success if no error
            return true;
        }
Exemplo n.º 5
0
        public Dictionary<string, object> Fill (WebInterface webInterface, string filename, OSHttpRequest httpRequest,
                                               OSHttpResponse httpResponse, Dictionary<string, object> requestParameters,
                                               ITranslator translator, out string response)
        {
            UserAccount ourAccount = Authenticator.GetAuthentication (httpRequest);
            IMoneyModule moneyModule = webInterface.Registry.RequestModuleInterface<IMoneyModule> ();
            var currencySymbol = "$";
            if (moneyModule != null)
                currencySymbol = moneyModule.InWorldCurrencySymbol;
            var directoryService = Framework.Utilities.DataManager.RequestPlugin<IDirectoryServiceConnector> ();

            response = null;
            var eventData = new EventData ();
            var vars = new Dictionary<string, object> ();
            string eventId;
            uint eid = 0;

            if (httpRequest.Query.ContainsKey ("eventid")) {
                eventId = httpRequest.Query ["eventid"].ToString ();
            } else {
                if (requestParameters.ContainsKey ("eventid")) {
                    eventId = requestParameters ["eventid"].ToString ();
                } else {
                    response = "<h3>Event details not supplied, redirecting to main page</h3>" +
                        "<script>" +
                        "setTimeout(function() {window.location.href = \"index.html\";}, 1000);" +
                        "</script>";
                    return null;
                }
            }
            uint.TryParse (eventId, out eid);

            if (requestParameters.ContainsKey ("Delete")) {
                //string newsID = httpRequest.Query ["delete"].ToString ();
                if (directoryService.DeleteEvent (eid.ToString ()))
                    response = "<h3>Event details have been deleted</h3>" +
                        "<script>" +
                        "setTimeout(function() {window.location.href = \"/?page=user_events\";}, 1000);" +
                        "</script>";
                else
                    response = "<h3>Error encountered when deleting event. Please try again later</h3>";
                return null;
            }

            if (requestParameters.ContainsKey ("Submit")) {
                string eventName = requestParameters ["eventName"].ToString ();
                string eventDate = requestParameters ["eventDate"].ToString ();
                string eventTime = requestParameters ["eventTime"].ToString ();
                string eventDuration = requestParameters ["eventDuration"].ToString ();
                string eventLocation = requestParameters ["eventLocation"].ToString ();
                string eventCategory = requestParameters ["eventCategory"].ToString ();
                string eventCoverCharge = requestParameters ["eventCoverCharge"].ToString ();
                string eventDescription = requestParameters ["eventDescription"].ToString ();

                var regionData = Framework.Utilities.DataManager.RequestPlugin<IRegionData> ();

                var selParcel = eventLocation.Split (',');
                // Format: parcelLocationX, parcelLocationY, parcelLandingX, parcelLandingY, parcelLandingZ, parcelUUID
                // "1020,995,128,28,25,d436261b-7186-42a6-dcd3-b80c1bcafaa4"

                Framework.Services.GridRegion region = null;
                var parcel = directoryService.GetParcelInfo ((UUID)selParcel [5]);
                if (parcel != null)
                    region = regionData.Get (parcel.RegionID, null);
                if (region == null) {
                    var error = "Parcel details not found!";
                    vars.Add ("ErrorMessage", "<h3>" + error + "</h3>");
                    response = "<h3>" + error + "</h3>";
                    return null;
                }

                // we have details...
                var eventDT = DateTime.Parse (eventDate + " " + eventTime);
                var localPos = new Vector3 (int.Parse (selParcel [0]), int.Parse (selParcel [0]), 0);

                eventData.eventID = eid;        // used to delete the existing event details
                eventData.creator = ourAccount.PrincipalID.ToString ();
                eventData.regionId = region.RegionID.ToString ();
                eventData.parcelId = selParcel [5];
                eventData.date = eventDT.ToString ("s");
                eventData.cover = uint.Parse (eventCoverCharge);
                eventData.maturity = (int)Util.ConvertAccessLevelToMaturity (region.Access);
                eventData.eventFlags = region.Access;             // region maturity flags
                eventData.duration = uint.Parse (eventDuration);
                eventData.regionPos = localPos;
                eventData.name = eventName;
                eventData.description = eventDescription;
                eventData.category = eventCategory;

                var success = directoryService.UpdateAddEvent (eventData);

                if (success)
                    response = "<h3>Event updated successfully</h3>" +
                        "<script language=\"javascript\">" +
                        "setTimeout(function() {window.location.href = \"/?page=user_events\";}, 1000);" +
                        "</script>";

                return null;
            }

            eventData = directoryService.GetEventInfo (eid);
            if (eventData == null) {
                response = "<h3>Event details are not available</h3>" +
                    "<script language=\"javascript\">" +
                    "setTimeout(function() {window.location.href = \"/?page=user_events\";}, 1000);" +
                    "</script>";

                return null;
            }

            // details
            vars.Add ("EventID", eventData.eventID);
            //vars.Add ("CreatorUUID", eventData.creator);
            vars.Add ("Name", eventData.name);
            vars.Add ("Description", eventData.description.Trim ());
            vars.Add ("SimName", eventData.simName);

            // Time selections
            var evntDateTime = Util.ToDateTime (eventData.dateUTC).ToLocalTime ();
            vars.Add ("EventDate", evntDateTime.ToShortDateString ());
            vars.Add ("EventTimes", WebHelpers.EventTimeSelections (evntDateTime.ToString ("HH\\:mm\\:ss")));

            // event durations
            vars.Add ("EventDurations", WebHelpers.EventDurationSelections ((int)eventData.duration));

            // event locations
            vars.Add ("EventLocations", WebHelpers.EventLocations (ourAccount, webInterface.Registry, eventData.parcelId));

            vars.Add ("EventCategories", WebHelpers.EventCategorySelections (int.Parse (eventData.category), translator));
            vars.Add ("EventCoverCharge", eventData.cover.ToString ());

            // labels
            vars.Add ("AddEventText", translator.GetTranslatedString ("AddEventText"));
            vars.Add ("EventNameText", translator.GetTranslatedString ("EventNameText"));
            vars.Add ("EventDateText", translator.GetTranslatedString ("EventDateText"));
            vars.Add ("EventTimeText", translator.GetTranslatedString ("TimeText"));
            vars.Add ("EventTimeInfoText", translator.GetTranslatedString ("EventTimeInfoText"));
            vars.Add ("EventDurationText", translator.GetTranslatedString ("DurationText"));
            vars.Add ("EventLocationText", translator.GetTranslatedString ("EventLocationText"));
            vars.Add ("EventCategoryText", translator.GetTranslatedString ("CategoryText"));
            vars.Add ("EventCoverChargeText", translator.GetTranslatedString ("CoverChargeText") + " " + currencySymbol);
            vars.Add ("EventDescriptionText", translator.GetTranslatedString ("DescriptionText"));


            vars.Add ("ErrorMessage", "");
            vars.Add ("Delete", translator.GetTranslatedString ("DeleteText"));
            vars.Add ("Submit", translator.GetTranslatedString ("SaveUpdates"));

            return vars;
        }