예제 #1
0
        public List <Holiday> GetHolidayList(string val)
        {
            OptinalClass _OptinalClass = new OptinalClass();

            _OptinalClass = Tool.AsObject <OptinalClass>(val);//genel class yapısına Deserialize
            List <Holiday> _HolidayList = new List <Holiday>();

            try
            {
                _HolidayList = db.Holiday.Where(x => x.CountryID == _OptinalClass.OptinalClass_ID).ToList();
            }
            catch (Exception ex)
            {
                ErrorSignal.FromCurrentContext().Raise(ex);//Elmah kullanarak olası hataları Db ye loglayacağım.
            }

            return(_HolidayList);
        }
예제 #2
0
        public string GetWorkDayList(string val)
        {
            OptinalClass _OptinalClass = new OptinalClass();

            _OptinalClass = Tool.AsObject <OptinalClass>(val);//genel class yapısına Deserialize
            List <WorkDay> _WorkDayList = new List <WorkDay>();

            try
            {
                _WorkDayList = db.WorkDay.Where(x => x.CountryID == _OptinalClass.OptinalClass_ID).ToList();
            }
            catch (Exception ex)
            {
                ErrorSignal.FromCurrentContext().Raise(ex);//Elmah kullanarak olası hataları Db ye loglayacağım.
            }

            return(Tool.AsJsonList(_WorkDayList));//Servis katmanında gelen ve giden datalar sürekli Json olacak
        }
예제 #3
0
        public JsonResult Register(BookModel val)
        {
            string       JsfunctionName = "CalculateReturn";  // dönüşte çalıştırılacak funciton adı parametresi
            OptinalClass _OptinalClass  = new OptinalClass(); // genel kullanım class yapım
            OptinalClass rtrn           = new OptinalClass(); // genel kullanım class yapım
            BookService  _BookService   = new BookService();

            if (Convert.ToDateTime(val.BeginDate) > Convert.ToDateTime(val.EndDate))// false ise return dön
            {
                rtrn.OptinalClass_val = false;
                rtrn.OptinalClass_msg = "Başlangıç Tarihi, Bitiş Tarihinden Büyük Olamaz!";
                return(Json(new { value = true, jqueryFunc = ("" + JsfunctionName + "({'value':'" + rtrn.OptinalClass_val + "','Return':'" + rtrn.OptinalClass_msg + "'})").Replace('\'', '"') })); // code blok burada return döndürsün
            }
            if (val.Country == "0")                                                                                                                                                                 //ülke gelen değer kontrol
            {
                rtrn.OptinalClass_val = false;
                rtrn.OptinalClass_msg = "Ülke Seçiniz!";
                return(Json(new { value = true, jqueryFunc = ("" + JsfunctionName + "({'value':'" + rtrn.OptinalClass_val + "','Return':'" + rtrn.OptinalClass_msg + "'})").Replace('\'', '"') }));// code blok burada return döndürsün
            }
            try
            {
                int.TryParse(val.Country, out int countryID);
                _OptinalClass.OptinalClass_ID = countryID;
                List <WorkDay> _WorkDayList = Tool.AsObjectList <WorkDay>(_BookService.GetWorkDayList(Tool.AsJson(_OptinalClass))); //Service projesinden, db de ülkeye göre tanımlanan çalışma günlerini alıyorum.
                List <Holiday> _Holiday     = _BookService.GetHolidayList(Tool.AsJson(_OptinalClass));                              //Service projesinden, db de ülkeye göre tanımlanan tatil günlerini alıyorum.

                DateTime BeginDate = Convert.ToDateTime(val.BeginDate);
                DateTime EndDate   = Convert.ToDateTime(val.EndDate);

                double TotalDay = (EndDate - BeginDate).TotalDays + 1; //dahil edilen gün sayısı

                int    BookDay    = 0;                                 //çalışma gü sayısı
                int    weekOfDay  = -1;                                // gün, haftanın hangi indexinde(squence)
                bool   isworkDay  = false;                             // çalışma günü mü
                bool   isholiday  = false;                             // tatil günü mü
                float  PenaltyPay = 0;                                 //ceza ücreti
                string Curreny    = "";                                //para birimi
                Curreny = Tool.AsObjectList <Country>(_BookService.GetCountryList()).Where(x => x.ID == countryID).SingleOrDefault().Currency;
                for (int i = 0; i < TotalDay; i++)                     //para birimini alıyorum
                {
                    #region Gün sequnce belirleme
                    weekOfDay = Tool.GetDayOfWeek(BeginDate.AddDays(i));//helper daki tool da, tarih haftanın hangi gününde bilgisini alıyorum.
                    #endregion
                    isworkDay = false;
                    foreach (WorkDay workDay in _WorkDayList) //çalışma günü mü?
                    {
                        if (workDay.DaySequence == weekOfDay) //squence e göre bakıyorum.
                        {
                            isworkDay = true;                 // çalışma günü ise şarta girecek
                            break;
                        }
                    }
                    isholiday = false;
                    foreach (Holiday holiday in _Holiday)// tatile denk geliyor mu?
                    {
                        if (holiday.Date == BeginDate.AddDays(i))
                        {
                            isholiday = true;// tatilse şarta girmicek
                            break;
                        }
                    }
                    if (!isholiday && isworkDay) //tatil değilse ve çalışma günü ise
                    {
                        BookDay++;               // günü 1 arttır.
                    }
                }
                if (BookDay > 10)                                                       // 10 çalışma gününden fazla ise ceza ücretine tabi olacak
                {
                    PenaltyPay = (BookDay - 10) * 5;                                    //hergün 5 para birimi
                }
                rtrn.OptinalClass_msg          = BookDay.ToString();                    // Çalışma gün sayısı
                rtrn.OptinalClass_optional_Msg = PenaltyPay.ToString() + " " + Curreny; // var ise Ceza tutarı
                rtrn.OptinalClass_val          = true;
            }
            catch (Exception ex)
            {
                ErrorSignal.FromCurrentContext().Raise(ex);                                                                                                                                                                                          //Elmah kullanarak olası hataları Db ye loglayacağım.
            }
            return(Json(new { value = true, jqueryFunc = ("" + JsfunctionName + "({'value':'" + rtrn.OptinalClass_val + "','WorkDays':'" + rtrn.OptinalClass_msg + "','Penalty':'" + rtrn.OptinalClass_optional_Msg + "'})").Replace('\'', '"') })); // Json dönerken main.js te tanımladığım form submit fonksiyonu çalıştığından geriye gerekli parametreleri tanımlıyorum.
        }
예제 #4
0
        public static OptinalClass BasicValidControl(string val, ParamType param)
        {
            OptinalClass _OptinalClass = new OptinalClass();

            try
            {
                switch (param)
                {
                case ParamType.Limit:
                    if (!int.TryParse(val, out int tmp))
                    {
                        _OptinalClass.OptinalClass_msg = "Limit Error";
                        _OptinalClass.OptinalClass_val = false;
                    }
                    else if (Convert.ToInt32(val) <= 0)
                    {
                        _OptinalClass.OptinalClass_msg = "Limit Error";
                        _OptinalClass.OptinalClass_val = false;
                    }
                    else
                    {
                        _OptinalClass.OptinalClass_val = true;
                    }
                    break;

                case ParamType.Position:
                    if (!int.TryParse(val, out int _tmp))
                    {
                        _OptinalClass.OptinalClass_msg = "Position Error";
                        _OptinalClass.OptinalClass_val = false;
                    }
                    else if (Convert.ToInt32(val) <= 0)
                    {
                        _OptinalClass.OptinalClass_msg = "Position Error";
                        _OptinalClass.OptinalClass_val = false;
                    }
                    else
                    {
                        _OptinalClass.OptinalClass_val = true;
                    }
                    break;

                case ParamType.Direction:
                    string[] Directions = { "R", "L", "M" };
                    _OptinalClass.OptinalClass_msg = "Direction Error";
                    _OptinalClass.OptinalClass_val = false;
                    foreach (string item in Directions)
                    {
                        if (val.Contains(item))
                        {
                            _OptinalClass.OptinalClass_val = true;
                        }
                    }

                    break;

                case ParamType.Compas:
                    string[] Compas = { "N", "E", "S", "W" };
                    _OptinalClass.OptinalClass_msg = "Direction Error";
                    _OptinalClass.OptinalClass_val = false;
                    foreach (string item in Compas)
                    {
                        if (val.Contains(item))
                        {
                            _OptinalClass.OptinalClass_val = true;
                        }
                    }

                    break;

                default:
                    _OptinalClass.OptinalClass_val = true;
                    break;
                }
            }
            catch (System.Exception ex)
            {
                _OptinalClass.OptinalClass_optional_Msg = "Hata!: " + ex.Message;
                _OptinalClass.OptinalClass_val          = false;
            }


            return(_OptinalClass);
        }
예제 #5
0
        public OptinalClass displayToConsole(string RoverMoveToMapPos)
        {
            OptinalClass _OptinalClass = new OptinalClass(); // Genel Return Class

            try
            {
                string[] input = RoverMoveToMapPos.Split(new[] { '@' });                                     // Gelen Bilgileri Burada Arraya Alıyorum.

                int[]  bounds           = input[0].Split(new[] { ' ' }).Select(i => int.Parse(i)).ToArray(); // Plota X ve Y Limiti
                string CompasDirections = "NESW";                                                            // Pusula Yönleri

                #region  Düzlem için X ve Y Aralık Tanımları
                MatrisAreaPoint[] Positions = new MatrisAreaPoint[4];
                Positions[0] = new MatrisAreaPoint(0, 1);
                Positions[1] = new MatrisAreaPoint(1, 0);
                Positions[2] = new MatrisAreaPoint(0, -1);
                Positions[3] = new MatrisAreaPoint(-1, 0);
                #endregion


                #region Matris Düzlemi olarak düşünürsek , X ve Y için Bir Array Şablonu Oluşturuyorum
                Tuple <int, int>[] ArrayLst = new[] { Tuple.Create(Positions[0].X, Positions[0].Y), Tuple.Create(Positions[1].X, Positions[1].Y), Tuple.Create(Positions[2].X, Positions[2].Y), Tuple.Create(Positions[3].X, Positions[3].Y) };
                #endregion

                for (int i = 1; i < input.Length; i += 2)
                {
                    #region Roverın Başlangışta;Plota düzlemindeki, X ile Y Bilgisi ve Yönü
                    string[] start         = input[i].Split(new[] { ' ' });
                    int      x             = int.Parse(start[0]);                // Başlangıç X Bilgisi
                    int      y             = int.Parse(start[1]);                // Başlangıç Y Bilgisi
                    int      moveDirection = CompasDirections.IndexOf(start[2]); //Başlangıç Yönü
                    #endregion

                    foreach (char position in input[i + 1])
                    {
                        switch (position)
                        {
                        case 'L':     // Yön ve Hareket Bilgisi L için 90 derece sola dön
                            moveDirection = (--moveDirection + ArrayLst.Length) % ArrayLst.Length;
                            break;

                        case 'R':     // Yön ve Hareket Bilgisi L için 90 derece sağ dön
                            moveDirection = ++moveDirection % ArrayLst.Length;
                            break;

                        default:      // Yön ve Hareket Bilgisi M ise; Yöne Göre X veya Y de Hareket Et
                            x = Math.Min(bounds[0], Math.Max(0, x + ArrayLst[moveDirection].Item1));
                            y = Math.Min(bounds[1], Math.Max(0, y + ArrayLst[moveDirection].Item2));
                            break;
                        }
                    }
                    _OptinalClass.OptinalClass_msg += (x + " " + y + " " + CompasDirections[moveDirection]);// Roverın Plotadaki Düzlemde Son Konumu
                }
                _OptinalClass.OptinalClass_val = true;
            }
            catch (Exception ex)
            {
                _OptinalClass.OptinalClass_val          = false;
                _OptinalClass.OptinalClass_optional_Msg = "Hata!: " + ex.Message;// Hata Mesajı
            }
            return(_OptinalClass);
        }
예제 #6
0
        private static void Main(string[] args)
        {
            #region Console Tam Ekran
            Console.SetWindowSize(Console.LargestWindowWidth, Console.LargestWindowHeight);
            ShowWindow(ThisConsole, MAXIMIZE);
            #endregion


            string Limit     = "";
            string Positon   = "";
            string MoveToMap = "";
            string tmp       = "";
            Console.Write(Helper.StartText());                                                                                                                                                                                                                          // Başlangıç Yazısı
            OptinalClass _OptinalClass = new OptinalClass();
            Console.Write(@"The possible letters are 'L', 'R' and 'M'. 'L' and 'R' makes the rover spin 90 degrees left or right respectively, without moving from its current spot.'M' means move forward one grid point, and maintain the same heading.Compas NESW"); // Rover için gerekli açıklama.

            #region Roverın Bulunduğu Plota için; X ve Y düzleminde Limit Bilgilerinin Girişi
            Console.Write("\n");
            Console.Write("\n");
            Console.Write("\n");
            Console.Write("Rover Area Limits X: ");
            Console.Write("\n");

            do
            {
                tmp           = Console.ReadLine().ToUpper();                  // Plota düzleminde X için Limit
                _OptinalClass = BasicValidControl(tmp, Model.ParamType.Limit); // Helper dan tipe göre kontrol
                Console.Write(_OptinalClass.OptinalClass_val ? ("Rover Area Limits Y: ") : (_OptinalClass.OptinalClass_msg + "- Again Rover Area Limits X: "));
            } while (!_OptinalClass.OptinalClass_val);                         // Hata var ise Tekrar Giriş Sağlansın
            Limit += tmp;
            Console.Write("\n");
            #endregion

            #region Rover Başlangıç Konumu için; X ve Y Bilgilerinin Girişi
            do
            {
                tmp           = Console.ReadLine().ToUpper().Trim();           // Plota düzleminde Y için Limit
                _OptinalClass = BasicValidControl(tmp, Model.ParamType.Limit); // Helper dan tipe göre kontrol
                Console.Write(_OptinalClass.OptinalClass_val ? ("Rover Positon X: ") : (_OptinalClass.OptinalClass_msg + "- Again Rover Area Limits Y: "));
            } while (!_OptinalClass.OptinalClass_val);                         // Hata var ise Tekrar Giriş Sağlansın
            Limit += " " + tmp;
            Console.Write("\n");
            do
            {
                tmp           = Console.ReadLine().ToUpper().Trim();              // Plota düzleminde Roverın X için Konumu
                _OptinalClass = BasicValidControl(tmp, Model.ParamType.Position); // Helper dan tipe göre kontrol
                Console.Write(_OptinalClass.OptinalClass_val ? ("Rover Positon Y: ") : (_OptinalClass.OptinalClass_msg + "- Again Rover Positon X: "));
            } while (!_OptinalClass.OptinalClass_val);                            // Hata var ise Tekrar Giriş Sağlansın
            Positon += tmp;
            Console.Write("\n");
            #endregion

            #region Rover Başlangıç Konumu için; Pusulaya Göre Yön Bilgisinin Girişi (NESW)
            do
            {
                tmp           = Console.ReadLine().ToUpper().Trim();              // Plota düzleminde Roverın Y için Konumu
                _OptinalClass = BasicValidControl(tmp, Model.ParamType.Position); // Helper dan tipe göre kontrol
                Console.Write(_OptinalClass.OptinalClass_val ? ("Rover Positon Compas: "******"- Again Rover Positon Y: "));
            } while (!_OptinalClass.OptinalClass_val);                            // Hata var ise Tekrar Giriş Sağlansın
            Positon += " " + tmp;
            Console.Write("\n");
            #endregion

            #region Rover için; Değiştireceği Yön ve Hareket Bilgisinin Girişi (LRM)
            do
            {
                tmp           = Console.ReadLine().ToUpper().Trim();            // Plota düzleminde Roverın Yönü
                _OptinalClass = BasicValidControl(tmp, Model.ParamType.Compas); // Helper dan tipe göre kontrol
                Console.Write(_OptinalClass.OptinalClass_val ? ("Rover MoveToMap: ") : (_OptinalClass.OptinalClass_msg + "- Again Rover Positon Compas: "******" " + tmp;
            Console.Write("\n");
            #endregion

            #region Rover'ın Plotada; X,Y Düzlemi Üzerindeki Son Pozisyonu(X,Y,Compas Bilgisi)
            do
            {
                tmp           = Console.ReadLine().ToUpper().Trim();               // Plota düzleminde Hareket edeceği Roverın Yönü ve Hareket Bilgisi
                _OptinalClass = BasicValidControl(tmp, Model.ParamType.Direction); // Helper dan tipe göre kontrol
                Console.Write(_OptinalClass.OptinalClass_val ? ("Rover Last Position: ") : (_OptinalClass.OptinalClass_msg + "- Again Rover MoveToMap: "));
            } while (!_OptinalClass.OptinalClass_val);                             // Hata var ise Tekrar Giriş Sağlansın
            MoveToMap += tmp;
            #endregion

            Service _Service = new Service();
            _OptinalClass = new OptinalClass();
            _OptinalClass = (_Service.displayToConsole(Limit + "@" + Positon + "@" + MoveToMap)); // Servis'e parametreleri vererek,Rover son konumunu alıyorum.

            if (!_OptinalClass.OptinalClass_val)                                                  // Servisten dönen değerde eğer hata var ise;
            {
                Console.Write(_OptinalClass.OptinalClass_optional_Msg);
                Console.ReadLine();
            }
            else // Servisten dönen değerde eğer hata yok ise;
            {
                Console.Write(_OptinalClass.OptinalClass_msg);
                Console.ReadLine();
            }
        }