public async Task <IActionResult> AddDocMenuD1([FromBody] ModelMenuD1 model)
        {
            var    requestUri = $"{_WebApiModel.BaseURL}/{"PrivateDocMenuD"}/{"AddDocMenuD1"}";
            string authHeader = HttpContext.Request?.Headers["Authorization"];

            if (authHeader != null && authHeader.StartsWith("Bearer"))
            {
                BearerToken = authHeader.Substring("Bearer ".Length).Trim();
            }
            var response = await HttpRequestFactory.Post(requestUri, BearerToken, model);

            switch (response.StatusCode)
            {
            case HttpStatusCode.Unauthorized:
                return(Unauthorized(response.ContentAsString()));

            case HttpStatusCode.BadRequest:
                return(BadRequest(response.ContentAsString()));

            case HttpStatusCode.OK:
                return(Ok(response.ContentAsString()));

            default:
                return(StatusCode(500));
            }
        }
        private async Task <ModelMenuD1> GetMenuD1DataEditAsync(string ProjectNumber, string userid, ModelPermissionPage permission)
        {
            string user_id = Encoding.UTF8.GetString(Convert.FromBase64String(userid));

            string sql = "SELECT TOP(1) A.*, B.name_thai as accept_result_name, " +
                         "(CASE WHEN A.acceptCondition = 1 THEN 'แบบปีต่อปี' ELSE 'ไม่มีวันหมอายุ' END) as accept_condition_name " +
                         "FROM Doc_MenuD1 A " +
                         "LEFT OUTER JOIN MST_AcceptResult B ON A.acceptResult = B.id " +
                         "WHERE project_number = '" + ProjectNumber + "' ORDER BY doc_id DESC";

            using (SqlConnection conn = new SqlConnection(ConnectionString))
            {
                conn.Open();
                using (SqlCommand command = new SqlCommand(sql, conn))
                {
                    SqlDataReader reader = await command.ExecuteReaderAsync();

                    if (reader.HasRows)
                    {
                        ModelMenuD1 e = new ModelMenuD1();
                        while (await reader.ReadAsync())
                        {
                            e.docid               = reader["doc_id"].ToString();
                            e.projectnumber       = reader["project_number"].ToString();
                            e.projectheadname     = reader["project_head_name"].ToString();
                            e.facultyname         = reader["faculty_name"].ToString();
                            e.advisorsnamethai    = reader["advisorsNameThai"].ToString();
                            e.acceptprojectno     = reader["acceptProjectNo"].ToString();
                            e.projectnamethai     = reader["project_name_thai"].ToString();
                            e.projectnameeng      = reader["project_name_eng"].ToString();
                            e.accepttypenamethai  = reader["accept_type_name"].ToString();
                            e.acceptresult        = Convert.ToInt16(reader["acceptResult"]);
                            e.acceptresultname    = reader["accept_result_name"].ToString();
                            e.acceptcondition     = Convert.ToInt16(reader["acceptCondition"]);
                            e.acceptconditionname = reader["accept_condition_name"].ToString();
                            e.acceptdate          = Convert.ToDateTime(reader["AcceptDate"]).ToString("dd/MM/yyyy");
                            e.createby            = reader["create_by"].ToString();
                        }
                        e.listRenewDate = new List <ModelMenuD1RenewTable>();
                        e.listRenewDate = await GetListRenewDateAsync(ProjectNumber);

                        //Default Edit False
                        e.editenable = false;
                        if (permission.edit == true)
                        {
                            if (user_id == e.createby)
                            {
                                e.editenable = true;
                            }
                        }

                        return(e);
                    }
                }
                conn.Close();
            }
            return(null);
        }
        public async Task <ModelResponseD1Message> UpdateDocMenuD1EditAsync(ModelMenuD1 model)
        {
            ModelResponseD1Message resp = new ModelResponseD1Message();

            var cultureInfo = new CultureInfo("en-GB");

            CultureInfo.DefaultThreadCurrentCulture   = cultureInfo;
            CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;

            model.docdate = DateTime.Now;

            resp = await _IDocMenuD1Repository.UpdateDocMenuD1EditAsync(model);

            return(resp);
        }
        public async Task <IActionResult> AddDocMenuD1([FromBody] ModelMenuD1 model)
        {
            ModelResponseD1Message e = await _IDocMenuDService.AddDocMenuD1Async(model);

            if (e.Status)
            {
                await _IMailTemplateService.MailTemplate2Async(model.projectnumber, e.filebase64);

                return(Ok(e));
            }
            else
            {
                return(BadRequest());
            }
        }
        public async Task <ModelResponseD1Message> UpdateDocMenuD1EditAsync(ModelMenuD1 model)
        {
            var cultureInfo = new CultureInfo("en-GB");

            CultureInfo.DefaultThreadCurrentCulture   = cultureInfo;
            CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;

            ModelResponseD1Message resp = new ModelResponseD1Message();

            using (SqlConnection conn = new SqlConnection(ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = new SqlCommand("sp_doc_menu_d1_edit", conn))
                {
                    cmd.CommandType = CommandType.StoredProcedure;

                    cmd.Parameters.Add("@doc_id", SqlDbType.Int).Value                     = model.docid;
                    cmd.Parameters.Add("@doc_date", SqlDbType.DateTime).Value              = model.docdate.ToString("yyyy-MM-dd");
                    cmd.Parameters.Add("@project_number", SqlDbType.VarChar, 20).Value     = ParseDataHelper.ConvertDBNull(model.projectnumber);
                    cmd.Parameters.Add("@project_head_name", SqlDbType.VarChar, 200).Value = ParseDataHelper.ConvertDBNull(model.projectheadname);
                    cmd.Parameters.Add("@faculty_name", SqlDbType.VarChar, 200).Value      = ParseDataHelper.ConvertDBNull(model.facultyname);
                    cmd.Parameters.Add("@project_name_thai", SqlDbType.VarChar, 200).Value = ParseDataHelper.ConvertDBNull(model.projectnamethai);
                    cmd.Parameters.Add("@project_name_eng", SqlDbType.VarChar, 200).Value  = ParseDataHelper.ConvertDBNull(model.projectnameeng);
                    cmd.Parameters.Add("@accept_type_name", SqlDbType.VarChar, 200).Value  = ParseDataHelper.ConvertDBNull(model.accepttypenamethai);
                    cmd.Parameters.Add("@advisorsNameThai", SqlDbType.VarChar, 200).Value  = ParseDataHelper.ConvertDBNull(model.advisorsnamethai);
                    cmd.Parameters.Add("@acceptProjectNo", SqlDbType.VarChar, 50).Value    = ParseDataHelper.ConvertDBNull(model.acceptprojectno);
                    cmd.Parameters.Add("@acceptResult", SqlDbType.Int).Value               = model.acceptresult;
                    cmd.Parameters.Add("@acceptCondition", SqlDbType.Int).Value            = model.acceptcondition;

                    cmd.Parameters.Add("@create_by", SqlDbType.VarChar, 50).Value = Encoding.UTF8.GetString(Convert.FromBase64String(model.createby));

                    // จริงๆไม่ต้องใช้แล้ว ------------------------------------------------------------------------------
                    cmd.Parameters.Add("@acceptDate", SqlDbType.DateTime).Value = Convert.ToDateTime(DateTime.Now);
                    cmd.Parameters.Add("@expireDate", SqlDbType.DateTime).Value = Convert.ToDateTime(DateTime.Now);
                    //---------------------------------------------------------------------------------------------

                    SqlParameter rStatus = cmd.Parameters.Add("@rStatus", SqlDbType.Int);
                    rStatus.Direction = ParameterDirection.Output;
                    SqlParameter rMessage = cmd.Parameters.Add("@rMessage", SqlDbType.NVarChar, 500);
                    rMessage.Direction = ParameterDirection.Output;

                    await cmd.ExecuteNonQueryAsync();

                    if ((int)cmd.Parameters["@rStatus"].Value > 0)
                    {
                        resp.Status = true;

                        model_rpt_9_file rpt = await _IDocMenuReportRepository.GetReportR9Async(Convert.ToInt32(model.docid));

                        resp.filename   = rpt.filename;
                        resp.filebase64 = rpt.filebase64;
                    }
                    else
                    {
                        resp.Message = (string)cmd.Parameters["@rMessage"].Value;
                    }
                }
                conn.Close();
            }
            return(resp);
        }