public RuRunningNo CheckParameter(int Count, string runningCode, params string[] parameter)
        {
            RuRunningNo Running = new RuRunningNo();

            if (Count >= 0 && Count <= parameter.Length)
            {
                if (Count == 0)
                {
                    Running = Context.RuRunningNo.Where(x => x.RunningTypeCode == runningCode &&
                                                        string.IsNullOrWhiteSpace(x.Parameter1)).FirstOrDefault();
                }
                if (Count == 1)
                {
                    Running = Context.RuRunningNo.Where(x => x.RunningTypeCode == runningCode &&
                                                        x.Parameter1 == parameter[0]).FirstOrDefault();
                }
                if (Count == 2)
                {
                    Running = Context.RuRunningNo.Where(x => x.RunningTypeCode == runningCode &&
                                                        x.Parameter1 == parameter[0] && x.Parameter2 == parameter[1]).FirstOrDefault();
                }
                if (Count == 3)
                {
                    Running = Context.RuRunningNo.Where(x => x.RunningTypeCode == runningCode &&
                                                        x.Parameter1 == parameter[0] && x.Parameter2 == parameter[1] && x.Parameter3 == parameter[2]).FirstOrDefault();
                }
                if (Count == 4)
                {
                    Running = Context.RuRunningNo.Where(x => x.RunningTypeCode == runningCode &&
                                                        x.Parameter1 == parameter[0] && x.Parameter2 == parameter[1] && x.Parameter3 == parameter[2] &&
                                                        x.Parameter4 == parameter[3]).FirstOrDefault();
                }
                if (Count == 5)
                {
                    Running = Context.RuRunningNo.Where(x => x.RunningTypeCode == runningCode &&
                                                        x.Parameter1 == parameter[0] && x.Parameter2 == parameter[1] && x.Parameter3 == parameter[2] &&
                                                        x.Parameter4 == parameter[3] && x.Parameter5 == parameter[4]).FirstOrDefault();
                }
                if (Count == 6)
                {
                    Running = Context.RuRunningNo.Where(x => x.RunningTypeCode == runningCode &&
                                                        x.Parameter1 == parameter[0] && x.Parameter2 == parameter[1] && x.Parameter3 == parameter[2] &&
                                                        x.Parameter4 == parameter[3] && x.Parameter5 == parameter[4] && x.Parameter6 == parameter[5]).FirstOrDefault();
                }
                if (Count == 7)
                {
                    Running = Context.RuRunningNo.Where(x => x.RunningTypeCode == runningCode &&
                                                        x.Parameter1 == parameter[0] && x.Parameter2 == parameter[1] && x.Parameter3 == parameter[2] &&
                                                        x.Parameter4 == parameter[3] && x.Parameter5 == parameter[4] && x.Parameter6 == parameter[5] &&
                                                        x.Parameter7 == parameter[6]).FirstOrDefault();
                }
                if (Count == 8)
                {
                    Running = Context.RuRunningNo.Where(x => x.RunningTypeCode == runningCode &&
                                                        x.Parameter1 == parameter[0] && x.Parameter2 == parameter[1] && x.Parameter3 == parameter[2] &&
                                                        x.Parameter4 == parameter[3] && x.Parameter5 == parameter[4] && x.Parameter6 == parameter[5] &&
                                                        x.Parameter7 == parameter[6] && x.Parameter8 == parameter[7]).FirstOrDefault();
                }
                if (Count == 9)
                {
                    Running = Context.RuRunningNo.Where(x => x.RunningTypeCode == runningCode &&
                                                        x.Parameter1 == parameter[0] && x.Parameter2 == parameter[1] && x.Parameter3 == parameter[2] &&
                                                        x.Parameter4 == parameter[3] && x.Parameter5 == parameter[4] && x.Parameter6 == parameter[5] &&
                                                        x.Parameter7 == parameter[6] && x.Parameter8 == parameter[7] && x.Parameter9 == parameter[8]).FirstOrDefault();
                }
                if (Count == 10)
                {
                    Running = Context.RuRunningNo.Where(x => x.RunningTypeCode == runningCode &&
                                                        x.Parameter1 == parameter[0] && x.Parameter2 == parameter[1] && x.Parameter3 == parameter[2] &&
                                                        x.Parameter4 == parameter[3] && x.Parameter5 == parameter[4] && x.Parameter6 == parameter[5] &&
                                                        x.Parameter7 == parameter[6] && x.Parameter8 == parameter[7] && x.Parameter9 == parameter[8] &&
                                                        x.Parameter10 == parameter[9]).FirstOrDefault();
                }
            }
            return(Running);
        }
        public RuRunningNo CreateRunningNo(RuRunningType runningType, params string[] parameter)
        {
            int         Count         = parameter.Length;
            RuRunningNo CreateRunning = new RuRunningNo();

            CreateRunning.RunningTypeCode = runningType.Code;
            if (Count > 0 && Count <= parameter.Length)
            {
                if (Count >= 1)
                {
                    if (!string.IsNullOrWhiteSpace(parameter[0]))
                    {
                        CreateRunning.Parameter1 = parameter[0];
                    }
                }
                if (Count >= 2)
                {
                    if (!string.IsNullOrWhiteSpace(parameter[1]))
                    {
                        CreateRunning.Parameter2 = parameter[1];
                    }
                }
                if (Count >= 3)
                {
                    if (!string.IsNullOrWhiteSpace(parameter[2]))
                    {
                        CreateRunning.Parameter3 = parameter[2];
                    }
                }
                if (Count >= 4)
                {
                    if (!string.IsNullOrWhiteSpace(parameter[3]))
                    {
                        CreateRunning.Parameter4 = parameter[3];
                    }
                }
                if (Count >= 5)
                {
                    if (!string.IsNullOrWhiteSpace(parameter[4]))
                    {
                        CreateRunning.Parameter5 = parameter[4];
                    }
                }
                if (Count >= 6)
                {
                    if (!string.IsNullOrWhiteSpace(parameter[5]))
                    {
                        CreateRunning.Parameter6 = parameter[5];
                    }
                }
                if (Count >= 7)
                {
                    if (!string.IsNullOrWhiteSpace(parameter[6]))
                    {
                        CreateRunning.Parameter7 = parameter[6];
                    }
                }
                if (Count >= 8)
                {
                    if (!string.IsNullOrWhiteSpace(parameter[7]))
                    {
                        CreateRunning.Parameter8 = parameter[7];
                    }
                }
                if (Count >= 9)
                {
                    if (!string.IsNullOrWhiteSpace(parameter[8]))
                    {
                        CreateRunning.Parameter9 = parameter[8];
                    }
                }
                if (Count >= 10)
                {
                    if (!string.IsNullOrWhiteSpace(parameter[9]))
                    {
                        CreateRunning.Parameter10 = parameter[9];
                    }
                }
            }
            CreateRunning.RunningNo   = 0;
            CreateRunning.Active      = true;
            CreateRunning.CreatedBy   = "Ru";
            CreateRunning.CreatedDate = DateTime.Now;
            Context.RuRunningNo.Add(CreateRunning);
            Context.SaveChanges();
            return(CreateRunning);
        }
        public ReturnMessageDTO GenerateRunningNo(string runningCode, params string[] parameter)
        {
            ReturnMessageDTO returnMessageDTO = new ReturnMessageDTO();

            try
            {
                //get running type and check null and not null
                RuRunningType runningType = RunningTypeService.GetRunningType(runningCode);

                //check running no มันคือการ get ข้อมูมลจาก database
                if (runningType == null)
                {
                    throw new Exception("Not found running Tpye!!");
                }
                RuRunningNo Running = Context.RuRunningNo.Where(x => x.RunningTypeCode == runningCode).FirstOrDefault();
                // ถ้ามัน ไม่มี วิ่งไป create แล้วส่งกลับมาเป็น RunningType
                Running = CheckParameter(parameter.Length, runningCode, parameter);
                if (Running == null)
                {
                    CreateRunningNo(runningType, parameter);
                    returnMessageDTO = GenerateRunningNo(runningCode, parameter);
                    return(returnMessageDTO);
                }
                // ถ้าเจอ ก็ update ในนี้แหล่ะ
                else
                {
                    Running = CheckParameter(parameter.Length, runningCode, parameter);
                }

                if (Running.Active == true && Running != null)
                {
                    //if (checkParameter(runningType, parameter) == true)
                    //{
                    Running.RunningNo++;
                    Running.UpdatedDate = DateTime.Now;
                    Running.UpdatedBy   = "RunningNoService";
                    string runningDigit = Running.RunningNo.ToString().PadLeft(runningType.RunningNoDigit, '0');
                    string result       = string.Format(runningType.RunningNoFormat
                                                        , Running.Parameter1
                                                        , Running.Parameter2
                                                        , Running.Parameter3
                                                        , Running.Parameter4
                                                        , Running.Parameter5
                                                        , Running.Parameter6
                                                        , Running.Parameter7
                                                        , Running.Parameter8
                                                        , Running.Parameter9
                                                        , Running.Parameter10
                                                        ).Replace("[RUNNING]", runningDigit);
                    Context.RuRunningNo.Update(Running);
                    Context.SaveChanges();
                    returnMessageDTO.Code        = result;
                    returnMessageDTO.TypeCode    = Running.RunningTypeCode;
                    returnMessageDTO.TypeName    = runningType.Name;
                    returnMessageDTO.Digit       = runningType.RunningNoDigit;
                    returnMessageDTO.Format      = runningType.RunningNoFormat;
                    returnMessageDTO.CreatedDate = Running.UpdatedDate;
                    returnMessageDTO.Message     = "RunningNo Created Success!!";
                    return(returnMessageDTO);
                    //}
                    //else
                    //{
                    //    CreateRunningNo(runningType, parameter);
                    //    return returnMessageDTO;
                    //}
                }
                throw new NotImplementedException();
            }
            catch (Exception e)
            {
                returnMessageDTO.Message = e.Message;
                return(returnMessageDTO);

                throw e;
            }
        }