public async Task <ShareConfigDetails> GetShareConfigDetails(string ShareName, string ShareCode, string ConnectionString)
        {
            ShareConfigDetails ShareConfigDetails = new ShareConfigDetails();

            ShareConfigDetails.lstShareconfigDetailsDTO = new List <ShareconfigDetailsDTO>();
            await Task.Run(() =>
            {
                try
                {
                    using (NpgsqlDataReader dr = NPGSqlHelper.ExecuteReader(ConnectionString, CommandType.Text, "select shareconfigid,sharename,sharecode,statusid from tblmstshareconfig where upper(sharecode)='" + ManageQuote(ShareCode.ToUpper()) + "' and upper(sharename)='" + ManageQuote(ShareName.ToUpper()) + "' and statusid = " + Convert.ToInt32(Status.Active) + ";"))
                    {
                        while (dr.Read())
                        {
                            ShareConfigDetails.pshareconfigid = Convert.ToInt64(dr["shareconfigid"]);
                            ShareConfigDetails.psharename     = Convert.ToString(dr["sharename"]);
                            ShareConfigDetails.psharecode     = Convert.ToString(dr["sharecode"]);
                        }
                    }
                    using (NpgsqlDataReader dr = NPGSqlHelper.ExecuteReader(ConnectionString, CommandType.Text, "SELECT recordid, shareconfigid, sharename, membertypeid, membertype,applicanttype, facevalue, minshares, maxshares, ismultipleshares,multipleshares, isdivedend, divedendpayout, sharetransfer FROM tblmstshareconfigdetails where shareconfigid=" + ShareConfigDetails.pshareconfigid + " and upper(sharename)='" + ManageQuote(ShareConfigDetails.psharename.ToUpper()) + "' and statusid = " + Convert.ToInt32(Status.Active) + ";"))
                    {
                        while (dr.Read())
                        {
                            ShareConfigDetails.lstShareconfigDetailsDTO.Add(new ShareconfigDetailsDTO
                            {
                                precordid         = Convert.ToInt64(dr["recordid"]),
                                pshareconfigid    = Convert.ToInt64(dr["shareconfigid"]),
                                psharename        = Convert.ToString(dr["sharename"]),
                                pmembertypeid     = Convert.ToInt64(dr["membertypeid"]),
                                pmembertype       = Convert.ToString(dr["membertype"]),
                                papplicanttype    = Convert.ToString(dr["applicanttype"]),
                                pfacevalue        = Convert.ToDecimal(dr["facevalue"]),
                                pminshares        = Convert.ToInt64(dr["minshares"]),
                                pmaxshares        = Convert.ToInt64(dr["maxshares"]),
                                pismultipleshares = Convert.ToBoolean(dr["ismultipleshares"]),
                                pmultipleshares   = Convert.ToInt64(dr["multipleshares"]),
                                pisdivedend       = Convert.ToBoolean(dr["isdivedend"]),
                                pdivedendpayout   = Convert.ToString(dr["divedendpayout"]),
                                psharetransfer    = Convert.ToBoolean(dr["sharetransfer"]),
                                pTypeofOperation  = "OLD"
                            });
                        }
                    }
                }
                catch (Exception)
                {
                    throw;
                }
            });

            return(ShareConfigDetails);
        }
        public async Task <IActionResult> GetShareConfigurationDetails(string ShareName, string ShareCode)
        {
            ShareConfigDetails ShareConfigDetails = new ShareConfigDetails();

            try
            {
                ShareConfigDetails = await ObjShareConfig.GetShareConfigDetails(ShareName, ShareCode, Con);

                return(ShareConfigDetails != null?Ok(ShareConfigDetails) : (IActionResult)StatusCode(StatusCodes.Status204NoContent));
            }
            catch (Exception)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError));

                throw;
            }
        }
        public IActionResult SaveShareConfigurationDeatils([FromBody]  ShareConfigDetails ShareConfigDetails)
        {
            try
            {
                if (ObjShareConfig.SaveShareConfigDetails(ShareConfigDetails, Con))
                {
                    return(Ok(true));
                }
                else
                {
                    return(StatusCode(StatusCodes.Status304NotModified));
                }
            }
            catch (Exception)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError));

                throw;
            }
        }
        public bool SaveShareConfigDetails(ShareConfigDetails ShareConfigDetails, string ConnectionString)
        {
            bool          Issaved  = false;
            string        Recordid = string.Empty;
            string        query    = "";
            StringBuilder SbInsert = new StringBuilder();

            try
            {
                con = new NpgsqlConnection(ConnectionString);
                if (con.State != ConnectionState.Open)
                {
                    con.Open();
                }
                trans = con.BeginTransaction();


                if (ShareConfigDetails.lstShareconfigDetailsDTO.Count > 0)
                {
                    for (int i = 0; i < ShareConfigDetails.lstShareconfigDetailsDTO.Count; i++)
                    {
                        if (ShareConfigDetails.lstShareconfigDetailsDTO[i].pTypeofOperation.Trim().ToUpper() != "CREATE")
                        {
                            if (string.IsNullOrEmpty(Recordid))
                            {
                                Recordid = ShareConfigDetails.lstShareconfigDetailsDTO[i].precordid.ToString();
                            }
                            else
                            {
                                Recordid = Recordid + "," + ShareConfigDetails.lstShareconfigDetailsDTO[i].precordid.ToString();
                            }
                        }
                        if (string.IsNullOrEmpty(ShareConfigDetails.lstShareconfigDetailsDTO[i].pmembertype))
                        {
                            ShareConfigDetails.lstShareconfigDetailsDTO[i].pmembertype = "";
                        }
                        if (string.IsNullOrEmpty(ShareConfigDetails.lstShareconfigDetailsDTO[i].papplicanttype))
                        {
                            ShareConfigDetails.lstShareconfigDetailsDTO[i].papplicanttype = "";
                        }
                        if (string.IsNullOrEmpty(ShareConfigDetails.lstShareconfigDetailsDTO[i].pdivedendpayout))
                        {
                            ShareConfigDetails.lstShareconfigDetailsDTO[i].pdivedendpayout = "";
                        }
                        if (ShareConfigDetails.lstShareconfigDetailsDTO[i].pTypeofOperation.Trim().ToUpper() == "CREATE")
                        {
                            SbInsert.Append("INSERT INTO tblmstshareconfigdetails(shareconfigid, sharename, membertypeid, membertype,applicanttype, facevalue, minshares, maxshares, ismultipleshares,multipleshares, isdivedend, divedendpayout, sharetransfer,statusid,createdby, createddate) VALUES (" + ShareConfigDetails.pshareconfigid + ",'" + ManageQuote(ShareConfigDetails.psharename) + "'," + ShareConfigDetails.lstShareconfigDetailsDTO[i].pmembertypeid + ",'" + ManageQuote(ShareConfigDetails.lstShareconfigDetailsDTO[i].pmembertype) + "','" + ManageQuote(ShareConfigDetails.lstShareconfigDetailsDTO[i].papplicanttype) + "'," + Convert.ToDecimal(ShareConfigDetails.lstShareconfigDetailsDTO[i].pfacevalue) + "," + ShareConfigDetails.lstShareconfigDetailsDTO[i].pminshares + "," + ShareConfigDetails.lstShareconfigDetailsDTO[i].pmaxshares + "," + ShareConfigDetails.lstShareconfigDetailsDTO[i].pismultipleshares + "," + ShareConfigDetails.lstShareconfigDetailsDTO[i].pmultipleshares + "," + ShareConfigDetails.lstShareconfigDetailsDTO[i].pisdivedend + ",'" + ManageQuote(ShareConfigDetails.lstShareconfigDetailsDTO[i].pdivedendpayout) + "'," + ShareConfigDetails.lstShareconfigDetailsDTO[i].psharetransfer + "," + Convert.ToInt32(Status.Active) + "," + ShareConfigDetails.pCreatedby + ",current_timestamp);");
                        }
                        if (ShareConfigDetails.lstShareconfigDetailsDTO[i].pTypeofOperation.Trim().ToUpper() == "UPDATE")
                        {
                            SbInsert.Append("UPDATE tblmstshareconfigdetails SET shareconfigid=" + ShareConfigDetails.pshareconfigid + ", sharename='" + ManageQuote(ShareConfigDetails.psharename) + "', membertypeid=" + ShareConfigDetails.lstShareconfigDetailsDTO[i].pmembertypeid + ", membertype='" + ManageQuote(ShareConfigDetails.lstShareconfigDetailsDTO[i].pmembertype) + "',applicanttype='" + ManageQuote(ShareConfigDetails.lstShareconfigDetailsDTO[i].papplicanttype) + "', facevalue=" + Convert.ToDecimal(ShareConfigDetails.lstShareconfigDetailsDTO[i].pfacevalue) + ", minshares=" + ShareConfigDetails.lstShareconfigDetailsDTO[i].pminshares + ", maxshares=" + ShareConfigDetails.lstShareconfigDetailsDTO[i].pmaxshares + ", ismultipleshares=" + ShareConfigDetails.lstShareconfigDetailsDTO[i].pismultipleshares + ",multipleshares=" + ShareConfigDetails.lstShareconfigDetailsDTO[i].pmultipleshares + ", isdivedend=" + ShareConfigDetails.lstShareconfigDetailsDTO[i].pisdivedend + ", divedendpayout='" + ManageQuote(ShareConfigDetails.lstShareconfigDetailsDTO[i].pdivedendpayout) + "', sharetransfer=" + ShareConfigDetails.lstShareconfigDetailsDTO[i].psharetransfer + " WHERE RECORDID=" + ShareConfigDetails.lstShareconfigDetailsDTO[i].precordid + ";");
                        }
                    }
                }
                if (!string.IsNullOrEmpty(Recordid))
                {
                    query = "update tblmstshareconfigdetails set statusid=" + Convert.ToInt32(Status.Inactive) + ",modifiedby=" + ShareConfigDetails.pCreatedby + ",modifieddate=current_timestamp where shareconfigid=" + ShareConfigDetails.pshareconfigid + "  and recordid not in(" + Recordid + ");";
                }
                else
                {
                    //if (ShareConfigDetails.lstShareconfigDetailsDTO.Count == 0)
                    //{
                    query = "update tblmstshareconfigdetails set statusid=" + Convert.ToInt32(Status.Inactive) + ",modifiedby=" + ShareConfigDetails.pCreatedby + ",modifieddate=current_timestamp where shareconfigid=" + ShareConfigDetails.pshareconfigid + ";";
                    //}
                }

                if (!string.IsNullOrEmpty(SbInsert.ToString()) || !string.IsNullOrEmpty(query))
                {
                    NPGSqlHelper.ExecuteNonQuery(trans, CommandType.Text, query + "" + SbInsert.ToString());
                }
                trans.Commit();
                Issaved = true;
            }
            catch (Exception)
            {
                trans.Rollback();
                throw;
            }
            finally
            {
                if (con.State == ConnectionState.Open)
                {
                    con.Dispose();
                    con.Close();
                    con.ClearPool();
                    trans.Dispose();
                }
            }
            return(Issaved);
        }