//[Authorize(Roles="UpdateProject")]
        public async Task <ObjectResult> Put(string id, [FromBody] PrjProjectViewModel prjVM)
        {
            GenericResult rs = new GenericResult();
            //DEFACEWEBSITEContext context = new DEFACEWEBSITEContext();

            PrjProjectMaster           pro    = prjVM.Project;
            IEnumerable <PrjProjectDT> proDts = prjVM.ProjectDT;

            try
            {
                XElement parent = null;
                if (proDts != null)
                {
                    parent = new XElement("Root");
                    foreach (PrjProjectDT dt in proDts)
                    {
                        XElement child = new XElement("PRJ_PROJECT_DT",
                                                      new XElement("PROJECT_ID", dt.PROJECT_ID),
                                                      new XElement("EMPLOYEE_ID", dt.EMPLOYEE_ID),
                                                      new XElement("PROJECT_CODE", dt.PROJECT_CODE),
                                                      new XElement("PROJECT_NAME", dt.PROJECT_NAME),
                                                      new XElement("EMLOYEE_CODE", dt.EMPLOYEE_CODE),
                                                      new XElement("EMPLOYEE_NAME", dt.EMPLOYEE_NAME),
                                                      new XElement("STATE", dt.STATE),
                                                      new XElement("NOTES", dt.NOTES),
                                                      new XElement("RECORD_STATUS", dt.RECORD_STATUS),
                                                      new XElement("MAKER_ID", dt.MAKER_ID),
                                                      new XElement("CREATE_DT", dt.CREATE_DT.Value.ToString("d")),
                                                      new XElement("AUTH_STATUS", dt.AUTH_STATUS),
                                                      new XElement("CHECKER_ID", dt.CHECKER_ID),
                                                      new XElement("APPROVE_DT", dt.APPROVE_DT.Value.ToString("d")),
                                                      new XElement("EDITOR_ID", dt.EDITOR_ID),
                                                      new XElement("EDIT_DT", dt.EDIT_DT.Value.ToString("d"))
                                                      );
                        parent.Add(child);
                    }
                }
                string command =
                    $"dbo.PRJ_PROJECT_MASTER_Upd @p_PROJECT_ID='{pro.PROJECT_ID}', @p_PROJECT_CODE='{pro.PROJECT_CODE}', @p_PROJECT_NAME=N'{pro.PROJECT_NAME}', @p_BEGIN_DATE='{pro.BEGIN_DATE.Value.ToString("d")}', @p_END_DATE='{pro.END_DATE.Value.ToString("d")}', @p_ESTIMATE_DATE='{pro.ESTIMATE_DATE.Value.ToString("d")}', @p_COMPLETION_DATE='{pro.COMPLETION_DATE.Value.ToString("d")}', @p_STATE='{pro.STATE}', @p_CONTRACT_ID='{pro.CONTRACT_ID}', @p_CONTRACT_CODE='{pro.CONTRACT_CODE}', @p_CONTRACT_TYPE='{pro.CONTRACT_TYPE}', @p_NOTES=N'{pro.NOTES}', @p_RECORD_STATUS='{pro.RECORD_STATUS}', @p_MAKER_ID='{pro.MAKER_ID}', @p_CREATE_DT='{pro.CREATE_DT.Value.ToString("d")}', @p_AUTH_STATUS='{pro.AUTH_STATUS}', @p_CHECKER_ID='{pro.CHECKER_ID}', @p_APPROVE_DT='{pro.APPROVE_DT.Value.ToString("d")}', @p_EDITOR_ID='{pro.EDITOR_ID}', @p_EDIT_DT='{pro.EDIT_DT.Value.ToString("d")}', @DT='{parent}', @p_MYSQL_USERNAME='******', @p_MYSQL_PASSWORD='******', @p_DATABASE_NAME='{pro.DATABASE_NAME}', @p_DOMAIN='{pro.DOMAIN}', @p_SUB_DOMAIN='{pro.SUB_DOMAIN}'";

                var result =
                    await _context.Database.ExecuteSqlCommandAsync(command,
                                                                   cancellationToken : CancellationToken.None);

                if (result > 0)
                {
                    rs.Succeeded = true;
                    rs.Message   = "Cập nhật dự án thành công";
                }
                else
                {
                    rs.Succeeded = false;
                    rs.Message   = "Đã có lỗi xảy ra";
                }
                ObjectResult objRes = new ObjectResult(rs);
                //context.Dispose();
                return(objRes);
            }
            catch (Exception ex)
            {
                rs.Succeeded = false;
                rs.Message   = ex.Message;
                ObjectResult objRes = new ObjectResult(rs);
                //context.Dispose();
                return(objRes);
            }
        }
        //[Authorize(Roles="AddProject")]
        public async Task <ObjectResult> Post([FromBody] PrjProjectViewModel prjVM)
        {
            GenericResult rs = new GenericResult();

            PrjProjectMaster           pro    = prjVM.Project;
            IEnumerable <PrjProjectDT> proDts = prjVM.ProjectDT;
            string cmd = $"dbo.PRJ_PROJECT_MASTER_Lst";

            var listResult = await _context.PrjProjectMaster.FromSql(cmd).ToListAsync();

            if (listResult != null)
            {
                if (listResult.Any(prj => prj.MYSQL_USERNAME.Equals(pro.MYSQL_USERNAME)))
                {
                    rs.Message   = "Username CSDL đã tồn tại!";
                    rs.Succeeded = false;
                    ObjectResult objRes = new ObjectResult(rs);

                    return(objRes);
                }
                if (listResult.Any(prj => prj.DATABASE_NAME.Equals(pro.DATABASE_NAME)))
                {
                    rs.Message   = "Tên CSDL cần tạo đã tồn tại!";
                    rs.Succeeded = false;
                    ObjectResult objRes = new ObjectResult(rs);

                    return(objRes);
                }
                if (listResult.Any(prj => prj.SUB_DOMAIN.Equals(pro.SUB_DOMAIN)))
                {
                    rs.Message   = "Subdomain đã tồn tại!";
                    rs.Succeeded = false;
                    ObjectResult objRes = new ObjectResult(rs);

                    return(objRes);
                }
            }
            //DEFACEWEBSITEContext context = new DEFACEWEBSITEContext();
            try
            {
                XElement parent = null;

                if (proDts != null)
                {
                    parent = new XElement("Root");
                    foreach (PrjProjectDT dt in proDts)
                    {
                        XElement child = new XElement("PRJ_PROJECT_DT",
                                                      new XElement("PROJECT_ID", dt.PROJECT_ID),
                                                      new XElement("EMPLOYEE_ID", dt.EMPLOYEE_ID),
                                                      new XElement("PROJECT_CODE", dt.PROJECT_CODE),
                                                      new XElement("PROJECT_NAME", dt.PROJECT_NAME),
                                                      new XElement("EMLOYEE_CODE", dt.EMPLOYEE_CODE),
                                                      new XElement("EMPLOYEE_NAME", dt.EMPLOYEE_NAME),
                                                      new XElement("STATE", dt.STATE),
                                                      new XElement("NOTES", dt.NOTES),
                                                      new XElement("RECORD_STATUS", dt.RECORD_STATUS),
                                                      new XElement("MAKER_ID", dt.MAKER_ID),
                                                      new XElement("CREATE_DT", dt.CREATE_DT.Value.ToString("d")),
                                                      new XElement("AUTH_STATUS", dt.AUTH_STATUS),
                                                      new XElement("CHECKER_ID", dt.CHECKER_ID),
                                                      new XElement("APPROVE_DT", dt.APPROVE_DT.Value.ToString("d")),
                                                      new XElement("EDITOR_ID", dt.EDITOR_ID),
                                                      new XElement("EDIT_DT", dt.EDIT_DT.Value.ToString("d"))
                                                      );
                        parent.Add(child);
                    }
                }

                string command = $"dbo.PRJ_PROJECT_MASTER_Ins @p_PROJECT_CODE='{pro.PROJECT_CODE}', @p_PROJECT_NAME=N'{pro.PROJECT_NAME}', @p_BEGIN_DATE='{pro.BEGIN_DATE.Value.ToString("d")}', @p_END_DATE='{pro.END_DATE.Value.ToString("d")}', @p_ESTIMATE_DATE='{pro.ESTIMATE_DATE.Value.ToString("d")}', @p_COMPLETION_DATE='{pro.COMPLETION_DATE.Value.ToString("d")}', @p_STATE='{pro.STATE}', @p_CONTRACT_ID='{pro.CONTRACT_ID}', @p_CONTRACT_CODE='{pro.CONTRACT_CODE}', @p_CONTRACT_TYPE='{pro.CONTRACT_TYPE}', @p_NOTES=N'{pro.NOTES}', @p_RECORD_STATUS='{pro.RECORD_STATUS}', @p_MAKER_ID='{pro.MAKER_ID}', @p_CREATE_DT='{pro.CREATE_DT.Value.ToString("d")}', @p_AUTH_STATUS='{pro.AUTH_STATUS}', @p_CHECKER_ID='{pro.CHECKER_ID}', @p_APPROVE_DT='{pro.APPROVE_DT.Value.ToString("d")}', @p_EDITOR_ID='{pro.EDITOR_ID}', @p_EDIT_DT='{pro.EDIT_DT.Value.ToString("d")}', @DT='{parent}', @p_MYSQL_USERNAME='******', @p_MYSQL_PASSWORD='******', @p_DATABASE_NAME='{pro.DATABASE_NAME}', @p_DOMAIN='{pro.DOMAIN}', @p_SUB_DOMAIN='{pro.SUB_DOMAIN}'";
                var    result  = await _context.Database.ExecuteSqlCommandAsync(command, cancellationToken : CancellationToken.None);

                //return result;
                if (result != -1)
                {
                    rs.Message   = "Thêm dự án thành công";
                    rs.Succeeded = true;
                }
                else
                {
                    rs.Message   = "Có lỗi xảy ra trong quá trình thêm!";
                    rs.Succeeded = false;
                }
                ObjectResult objRes = new ObjectResult(rs);
                //context.Dispose();
                return(objRes);
            }
            catch (Exception ex)
            {
                rs.Message   = "Lỗi " + ex.Message;
                rs.Succeeded = false;
                ObjectResult objRes = new ObjectResult(rs);
                //context.Dispose();
                return(objRes);
            }
        }