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); }
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 }
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. }
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); }
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); }
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(); } }