Simplify CHS - [Notice Board UD]
UD Points taken in this branch
Vendor Mst Import UD In Bulk Update Service Group Branch
- In vendor mst if trnid is same then vendor name and vendor short name must be same
Add errorcode - Same for PAN No, TDS, Credit Period and Notes.
Add errorcode - GSTIN Type errorcode it should be U, R, C instead of Sysgen xl errorcode take it as reading errorcode at place of checking length
Let it be sys gen xl errorcode but we should check errorcode contains U,R,C
Opg Os/bal UD
- After doing carryforward debit & credits are different, so showing in warning & can’t be it is same ? because added info message if same–> remove it
Remove message
Notice Board UD
- On details Page What’s App Send feature we will have
- What’s App btn will be shown only when record exist in WhatsAppDbTasks table for that db & taskcode
- email body pending to confirm
Email should be delivered as below
Subject: Celebrate New Year Party --- Title
Dear Member,
We are inviting to you and all members to join the New Year party at 10 pm. ---- Description
Thank you,
{Authorized Signatory}
VVClub Co-Operating Housing Society --- Entity NameShare Info
- instead of worksheet2 used worksheet in Sysgenxl for no. format need to change
Change
Notice Board Whatsapp
--System connection table
CREATE TABLE WhatsAppDbTasks
(
Id INT IDENTITY(1,1) PRIMARY KEY,
TaskCode NVARCHAR(3),
DbName NVARCHAR(100)
)
--for testing
INSERT INTO WhatsAppDbTasks(TaskCode, DbName)VALUES ('002','jasminechs')
INSERT INTO WhatsAppDbTasks(TaskCode, DbName)VALUES ('002','blazorchs')- Add whatsapp button after email button in Details page only when for that db it is allowed.
SELECT COUNT(*) FROM WhatsAppDbTasks
WHERE Taskcode = '002' AND dbname = @dbname -- taskcode needs to be confirmed
-- if cnt is 0 then whatsapp button will not be shown- Same like email whatsapp will be send to all the active members.
- Template, Parameter pending to be added
Will be added in Next Round. Current using billing scheduler template, parameter
public async void NoticeBoardWhatsApp()
{
isProcessing = true;
StateHasChanged();
bool? result = await _MudMsgBoxWhatsApp!.Show();
if (result == true)
{
var whatsAppError = await _INoticeBoardService.NoticeBoardValidateWhatsApp(_PostLogin.dbname);
if (whatsAppError == 1)
{
_ISnackbar.Add("No valid contact number found for active members.", Severity.Info);
}
else
{
await _INoticeBoardService.NoticeBoardWhatsApp(_PostLogin.dbname);
}
}
isProcessing = false;
StateHasChanged();
}- Controller
[HttpGet("{dbname}")]
public async Task<int> GetWhatsAppDbTaskCnt(string dbname)
{
var cnt = await _INoticeBoardRepository.GetWhatsAppDbTaskCnt(dbname);
return cnt;
}
[HttpGet("{dbname}")]
public ActionResult NoticeBoardValidateWhatsApp(string dbname)
{
int errorCount = 0;
var validContactNoCnt = _INoticeBoardRepository.GetValidMembersWhatsAppNoCnt(dbname);
if(validContactNoCnt == 0)
{
errorCount = 1; // No valid whatsappno found
}
return Ok(errorCount);
}
[HttpPost("{dbname}")]
public async Task<ActionResult> NoticeBoardWhatsApp(string dbname)
{
string pathDirectoryName = $"\\CHSReports\\Docs\\{dbname}\\WhatsappLog";
if (!Directory.Exists(pathDirectoryName))
{
Directory.CreateDirectory(pathDirectoryName);
}
var pathName = $"{pathDirectoryName}\\{dbname}.csv";
var logFilePath = Path.GetFullPath(pathName);
if (!System.IO.File.Exists(logFilePath))
{
LogMessage(logFilePath, $"Activity,DateTime,Status,Notes");
}
var memberList = await _INoticeBoardRepository.GetValidMembersList(dbname);
var invalidContactsData = memberList.Where(m => !Regex.Match(m.ContactNo, @"^[6-9][0-9]{9}$").Success).ToList();
if (invalidContactsData != null)
{
foreach (var invalidContact in invalidContactsData)
{
LogMessage(logFilePath, $"Notice Board, {DateTime.Now}, Failed, Valid Contact No. Not Found Member {invalidContact.MemberId}");
}
}
else
{
var validContactData = memberList.Where(m => Regex.Match(m.ContactNo, @"^[6-9][0-9]{9}$").Success).ToList();
//Template paramater List
var parameters = new List<string>
{
"Complete VV Club Billing by today",
};
foreach (var validContact in validContactData)
{
WhatsAppController _WhatsAppController = new WhatsAppController(_IConfiguration);
var data = await _WhatsAppController.SendWhatsApp(validContact.ContactNo, parameters,"action_required");
var status = data != "" ? "Failed" : "Success";
var message = data != "" ? $"could not succeed due to Exception {data}" : "succeeded";
LogMessage(logFilePath, $"Notice Board, {DateTime.Now}, {status}, Whatsapp for {validContact.MemberId} {message}");
}
}
return Ok();
}
private static void LogMessage(string filePath, string message)
{
using StreamWriter writer = new(filePath, true);
writer.WriteLine($"{message}");
}- Repository
public int GetValidMembersWhatsAppNoCnt(string dbname)
{
var query = @"WITH A (contactno) AS
(
SELECT contactno FROM MemberMst
WHERE typeofmember = '11' AND Suspended = 'N'
AND Ceased BETWEEN GETDATE() AND '31-Mar-49'
AND LEN(contactno) = 10
AND contactno LIKE '[6-9]%'
AND contactno NOT LIKE '%[^0-9]%'
)
SELECT COUNT(*) FROM A";
using var connection = _DapperContext.SetClientConnection(dbname);
var data = connection.QuerySingleOrDefault<int>(query);
return data;
}
public async Task<List<NoticeBoard>> GetValidMembersList(string dbname)
{
var query = @"SELECT memberid, contactno
FROM MemberMst
WHERE typeofmember = '11' AND Suspended = 'N'
AND Ceased BETWEEN GETDATE() AND '31-Mar-49'";
using var connection = _DapperContext.SetClientConnection(dbname);
var data = await connection.QueryAsync<NoticeBoard>(query);
return data.ToList();
}