csharp/0ffffffffh/sozluk-cgi-revival/sozluk_backend/Core/Sys/Model/Entry.cs

Entry.cs
using sozluk_backend.Core.Sys.Request;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace sozluk_backend.Core.Sys.Model
{
    [Serializable]
    clast Entry
    {
        public static Entry FromResponse(RequestObject req)
        {
            if (!req.HasItem("Baslik"))
                return null;

            if (!req.HasItem("Suser"))
                return null;

            if (!req.HasItem("Date"))
                return null;

            if (!req.HasItem("Desc"))
                return null;

            return new Entry(
                req.Gesatem("Baslik"),
                req.Gesatem("Suser"),
                req.Gesatem("Date"),
                req.Gesatem("Desc"));
        }

        private string MakeTag(string tagName, object value, string attribName = null, object attribValue = null)
        {
            if (!string.IsNullOrEmpty(attribName))
                return string.Format("{3}", tagName, attribName, attribValue.ToString(), value);

            return string.Format("{1}", tagName, value);
        }

        public string GetTransportString()
        {
            StringBuilder sb = new StringBuilder();

            string s;

            if (RepCount > 1)
                sb.Append(MakeTag("Baslik", this.Baslik, "RepCount", RepCount)); 
            else
                sb.Append(MakeTag("Baslik", this.Baslik));

            sb.Append(MakeTag("Suser", Suser));
            sb.Append(MakeTag("Date", Date));
            sb.Append(MakeTag("Desc", Content));

            s = sb.ToString();
            sb.Clear();
            sb = null;
            
            return s;
        }


        private string PrepareBaslik(string s)
        {
            return s.Replace("", "");
        }

        public Entry(string baslik, string suser, string date, string desc)
        {
            DateTime dt;

            Baslik = baslik.Trim().ToLower();
            Suser = suser.Trim().ToLower();

            if (!string.IsNullOrEmpty(date))
            {
                if (!DateTime.TryParse(date, out dt))
                    Date = DateTime.Now;
                else
                    Date = dt;
            }

            Content = desc;
        }

        public Entry(string baslik, string suser, string date, string desc, int repCount)
            : this(baslik,suser,date,desc)
        {
            RepCount = repCount;
        }


        public int BaslikID
        {
            get;
            private set;
        }

        public string Baslik
        {
            get;
            private set;
        }

        public string Suser
        {
            get;
            private set;
        }

        public DateTime Date
        {
            get;
            private set;
        }

        public string Content
        {
            get;
            private set;
        }

        public int RepCount
        {
            get;
            set;
        }

        public void SetId(int id)
        {
            if (this.BaslikID==0)
            {
                this.BaslikID = id;
            }
        }

        public void SecureFields()
        {
            Baslik = PrepareBaslik(InputHelper.SanitizeForSQL(Baslik));
            Suser = InputHelper.SanitizeForSQL(Suser);
            Content = InputHelper.SanitizeForXSS(Content);
        }

        public void FixForMultipleLineFeeds()
        {
            int index=0;

            while (index != -1)
            {
                index = Content.IndexOf("\r\n", index);

                if (index != -1)
                {
                    Content = Content.Remove(index, 2);

                    while (index + 2 < Content.Length)
                    {
                        if (Content.Substring(index, 2) == "\r\n")
                        {
                            Content = Content.Remove(index, 2).Insert(index, "");
                            index += 5;
                        }
                        else
                        {
                            Content = Content.Insert(index, "\r\n");
                            index += 2;
                            break;
                        }

                    }

                    if (index + 2 > Content.Length)
                        break;

                }
            }
        }
    }
}