|
Whenever we create an enterprise level apllications then we break the entire architecture into different layes like UI (user interface) layer, Entities (containing plain classes)Layer, DAL(Data access layer) and Service layer. Now, as u asked, all the data base related logic like--
1> to access database
2> to perform CRUD operations
3> to create instance of database objects.
All these logics are written in data access layer for the purpose of seperation of concerns and to provide more robust and neater code.
please have a look at these articles.....
Creating ASP.NET Applications with N-Tier Architecture[^]
http://www.codeproject.com/Articles/36847/Three-Layer-Architecture-in-C-NET
|
|
|
|
|
DAL is part of Factory Model in asp.net.there is have model 、BLL and website item.
In China ,A Programmer dev a tool ,that can use hid tool generate DAL BLL and Model,when soft generate the code,you want It needs fine-tuning a litter.can save more time.
wish can helo you.
|
|
|
|
|
Need Samples to display the PDF Content and also some html controls in MVC application
|
|
|
|
|
Please search the articles section of this website along with google. There you'll find plenty of samples.
There are only 10 types of people in the world, those who understand binary and those who don't.
|
|
|
|
|
Normally you display a pure PDF page as a page.
I suppose you can can display a PDF page as an image element, but you might have to create a PDF thumbnail, in which I haven't figured out how to do yet.
You can also add buttons to a PDF document to perform certain functions like print, and hyperlinks to move to sections of the page.
But combining HTML with a PDF may be tough to do, I don't think it can be done.
I searched and found nothing.
|
|
|
|
|
You can either display the file in an <iframe> , or use PDF.js[^] to display it inline.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
In MVC My Application, we are showing the pdf with the help of pdfviewer in popup, when printing the pdf through wireless printer in IPAD 8.0 it prints white page...
Kindly reply for this to get solution.
|
|
|
|
|
Sounds like you need to do some technical support troubleshooting with the pdfviewer and Ipad.
There are only 10 types of people in the world, those who understand binary and those who don't.
|
|
|
|
|
i use this admin panel in my project university management system.if any free project download site can suggest it will be helpful
|
|
|
|
|
Need more info. What admin panel?
There are only 10 types of people in the world, those who understand binary and those who don't.
|
|
|
|
|
Hi,
Iam stuck up with this thing for past couple of days.
Iam saving company details in access database with compLogo as one of the field name to store the logo image as an OLE Object.
I can display the image in the form but i cannot display it in the crystal report.
I created a dataset with a datatable and created a column called compLogo with data type System.Byte and added this datatable to the database field of the report and dragged and droped the compLogo fieldobject.
And in the code i retrieved the image as a byte array and passed it to the datatable field, but it shows the following error:
System.ArgumentException: Input String was not in a correct format. Couldn't store <system.byte[]> in compLogo Column. Expected type is Byte.
Thanks in advance!!!!
|
|
|
|
|
You'll need to post the relevant code.
There are only 10 types of people in the world, those who understand binary and those who don't.
|
|
|
|
|
Hi,
I do have a website that is acting like a FTP site for uploads and downloads.
The workflow is:
- A user account is created
- A folder is created (kind of a home directory)
- A user logs in
- Uploads a file
- An agent logs in
- Download the file
When ever an agent logs in, there is a check for user accounts with no activity for 90+ days.
If found, the user account is deleted and the associated folder too.
THAT's where I have my problem.
1) The user is removed from the role (all good)
2) The user account is deleted (all good)
3) The files and the folder are deleted (issue: permission denied)
Looking at the file permissions in the Windows Explorer, none of the accounts listed does, indeed, have permission to delete the files.
The files to be deleted are ALL created one way or another via the website (either by upload of code behind file creation)
I Googled around and it looks like the Impersonation is the way to go for the deletion.
Now, I found this tutorial on this website but it's all in C# and my page is in VB.NET:
A complete Impersonation Demo in C#.NET[^]
I did find a VB version of the impersonation (lost the link) and when it ran, it crashed the website completely.
I now found this one:
https://code.msdn.microsoft.com/windowsapps/VBImpersonateUser-d8467be8[^]
Before I start to use this (since it's a production website), can anyone tell me if it's any good?
Or...maybe has a better idea on how to delete files created by the website that cannot be deleted by that same website.
Thanks.
|
|
|
|
|
|
|
Hi,
I want to send an URL inside the mail body using the System.Web.Mail API.
Like http://test.com/MyPage/Select.aspx -> This will be the actual URL.
But the user should be seeing only the hyperlink like Select. The complete URL should be hidden. Upon clicking the link, he should be navigated to the actual URL.
I have tried the option BodyFormat = MailFormat.Html; But it is being send as Text not link.
Any suggestions please.
|
|
|
|
|
Did you try this?
<a href="http://test.com/MyPage/Select.aspx">Select</a>
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson
|
|
|
|
|
yes I have tried the same. In the mail body after receiving, the word Select is shown as text. But not link.
|
|
|
|
|
Did you already take a look at the actual source of the mail? Maybe it's just a display issue (or configuration option) with your email application.
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson
|
|
|
|
|
You create a HTML Page, place whatever you want as content in it, and attach the page to the
MailMessage.Body property
Dim netMail As New MailMessage
netMail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure
netMail.IsBodyHtml = True
netMail.BodyEncoding = System.Text.Encoding.UTF8
netMail.Priority = MailPriority.High
netMail.Subject = m_Subject & " - " & DateTime.Now.ToLongTimeString()
netMail.SubjectEncoding = System.Text.Encoding.UTF8
netMail.Body = htmlTemplate
When creating your HTML, us the rules, you use tables and cells, old school HTML
https://www.campaignmonitor.com/resources/will-it-work/guidelines/[^]
|
|
|
|
|
|
It's likely the client's email program. Many disable html by default for security reasons. Just have them enable html emails.
There are only 10 types of people in the world, those who understand binary and those who don't.
|
|
|
|
|
Hi all ,
I am using save, cancel and back button to update the content page ,please see code below but they are not able to do so,Please tell to make them to update the page.
MASTER page:-
<%@ Master Language="C#" MasterPageFile="~/Layout.master" AutoEventWireup="true" CodeFile="Userwebpages.master.cs" Inherits="Userwebpages" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
<asp:ContentPlaceHolder id="ContentPlaceHolderinNestedhead" runat="server">
</asp:ContentPlaceHolder>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<table id="webpagetable">
<tr>
<td class="backbutton">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePnl1" runat="server">
<ContentTemplate>
<asp:Button ID="Back_button" runat="server" CssClass="button" CausesValidation="false" Text="Back" OnClick="Back_click" />
<hr class="horizontal-ruler"/>
</ContentTemplate>
</asp:Updatepanel>
</td></tr>
<tr><td>
<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePnl1" >
<ProgressTemplate>
<asp:Image ID="Image1" runat="server" ImageUrl="~/images/loading_circle.gif" CssClass="loading_image">
</asp:Image>
</ProgressTemplate>
</asp:UpdateProgress>
<asp:ContentPlaceHolder id="ContentPlaceHolderInNested" runat="server">
</asp:ContentPlaceHolder>
Content Page .ASPX-
<pre><%@ Page Title="" Language="C#" MasterPageFile="~/Userwebpages.master" AutoEventWireup="true" CodeFile="User.aspx.cs" Inherits="Super_admin_User" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolderinNestedhead" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolderinNested" Runat="Server">
<h3 class="page-heading">User</h3>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always"
ChildrenAsTriggers="true" >
<ContentTemplate>
<table id="Usertable" cellspacing="20" align="center">
<%----%>
<tr><td class="txtfieldname">Branch :</td><td>
<asp:DropDownList ID="ddlbranchname"
CssClass="dropdownlist" runat="server"
DataTextField="Branch_name" DataValueField="Branch_Id" AutoPostBack="True"
onselectedindexchanged="ddlbranchname_SelectedIndexChanged">
</asp:DropDownList>
<asp:RequiredFieldValidator ID="Rfv_branchname" runat="server" Display="None" ErrorMessage="Please select Branch name " SetFocusOnError="true" ControlToValidate="ddlbranchname"></asp:RequiredFieldValidator>
</td>
<td class="txtfieldname">
User Type :</td>
<td>
<asp:DropDownList ID="ddlusertypesearching"
CssClass="dropdownlist" runat="server"
DataTextField="User_Typename" DataValueField="User_Type_Id"
onselectedindexchanged="ddlusertypesearch_SelectedIndexChanged"
AutoPostBack="True"></asp:DropDownList>
<asp:RequiredFieldValidator ID="Rfv_usertype" runat="server" Display="None" ErrorMessage="Please select user type " SetFocusOnError="true" ControlToValidate="ddlusertypesearching"></asp:RequiredFieldValidator>
</td>
</tr>
<%----%>
<tr><td colspan="4" align="left"> <asp:Button ID="Btn_AddnewUser" runat="server"
CssClass="button" Text="Add New user" onclick="Btn_AddnewUser_Click" />
<asp:HiddenField ID="Input_mode" runat="server" Value="I" />
<asp:HiddenField ID="User_Id" runat="server" />
</td></tr>
<tr><td colspan="4" style="height:400px; vertical-align:top; align:center;" >
<asp:GridView ID="GridView_BranchUsers" CssClass="GridViewStyle"
runat="server" AutoGenerateColumns="False"
onrowcommand="Gridview_branchusers_rowcommand"
onrowdatabound="Gridview_branchusers_databound">
<Columns>
<asp:TemplateField HeaderText="Sno" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:Label ID="lbl_sno" runat="server" Text="<%# Container.DataItemIndex+1 %>"></asp:Label>.
<asp:HiddenField ID="User_Id" runat="server" Value="<%# Bind('User_Id') %>" />
<asp:HiddenField ID="Usertypeid" runat="server" Value="<%# Bind('User_Type_Id') %>" />
<asp:HiddenField ID="Gender" runat="server" Value="<%# Bind('Gender') %>" />
<asp:HiddenField ID="Designation" runat="server" Value="<%# Bind('Designation') %>" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Branch Name" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:Label ID="lbl_branchname" runat="server" Text="<% #Bind('Branch_name') %>"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Firstname" HeaderText="First Name "
SortExpression="Firstname" />
<asp:BoundField DataField="Lastname" HeaderText="Last Name"
SortExpression="Lastname" />
<asp:BoundField DataField="Username" HeaderText="Username"
SortExpression="Username" />
<asp:BoundField DataField="Password" HeaderText="Password"
SortExpression="Password" />
<asp:TemplateField HeaderText="Active Status" ItemStyle-HorizontalAlign="Center" >
<ItemTemplate>
<asp:Label ID="User_Active" runat="server" Text="<% #Bind('Active') %>"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Edit">
<ItemTemplate> <asp:LinkButton ID="LinkButton1" runat="server" CommandName="Edit1" CommandArgument="<%# Container.DataItemIndex %>">Edit</asp:LinkButton></ItemTemplate>
</asp:TemplateField>
</Columns>
<HeaderStyle CssClass="GridViewHeaderStyle" />
<RowStyle CssClass="GridViewRowStyle" />
</asp:GridView>
<asp:Panel ID="Pnl_edituser" runat="server">
<table cellspacing="20" align="center" style=" vertical-align:top; text-align:center;">
<tr>
<td class="txtfieldname">
First Name :</td>
<td align="left">
<asp:TextBox ID="txtfirstname" runat="server" CssClass="txtbox"></asp:TextBox>
<ajaxtoolkit:FilteredTextBoxExtender
ID="FilteredTextBoxExtender1" runat="server" FilterType="LowercaseLetters, UppercaseLetters"
TargetControlID="txtfirstname">
</ajaxtoolkit:FilteredTextBoxExtender>
</td>
</tr>
<tr><td class="txtfieldname">Last Name :</td><td align="left">
<asp:TextBox ID="txtlastname" runat="server" CssClass="txtbox"></asp:TextBox>
<ajaxtoolkit:FilteredTextBoxExtender
ID="FilteredTextBoxExtender2" runat="server" FilterType="LowercaseLetters, UppercaseLetters"
TargetControlID="txtlastname">
</ajaxtoolkit:FilteredTextBoxExtender>
</td></tr>
<tr>
<td class="txtfieldname">
Gender</td>
<td align="left">
<asp:RadioButton ID="Rdo_male" runat="server" Checked="True"
GroupName="gender" Text="Male" />
<asp:RadioButton ID="Rdo_female" runat="server" GroupName="gender"
Text="Female" />
</td>
</tr>
<tr>
<td class="txtfieldname">
Designation</td>
<td align="left">
<asp:TextBox ID="txtdesignation" runat="server" CssClass="txtbox"></asp:TextBox>
<ajaxtoolkit:FilteredTextBoxExtender
ID="FilteredTextBoxExtender3" runat="server" FilterType="LowercaseLetters, UppercaseLetters"
TargetControlID="txtdesignation" ValidChars="_">
</ajaxtoolkit:FilteredTextBoxExtender>
</td>
</tr>
<tr>
<td class="txtfieldname">
Username :</td>
<td align="left">
<asp:TextBox ID="txtusername" runat="server" CssClass="txtbox"></asp:TextBox>
<ajaxtoolkit:FilteredTextBoxExtender
ID="FilteredTextBoxExtender4" runat="server" FilterType="LowercaseLetters, UppercaseLetters"
TargetControlID="txtusername">
</ajaxtoolkit:FilteredTextBoxExtender>
</td>
</tr>
<tr>
<td class="txtfieldname">
Password :
</td>
<td align="left">
<asp:TextBox ID="txtpwd" runat="server" CssClass="txtbox"></asp:TextBox>
</td>
</tr>
<tr>
<td class="txtfieldname">
Confirm Password :
</td>
<td align="left">
<asp:TextBox ID="txtcpwd" runat="server" CssClass="txtbox"></asp:TextBox>
</td>
</tr>
<tr>
<td class="txtfieldname">
User Account Status :</td>
<td align="left">
<asp:CheckBox ID="Chk_accountstatus" runat="server" />
</td>
</tr>
<tr>
<td align="center" colspan="2">
<asp:Button ID="Btn_save" runat="server" CssClass="button" Text="Save"
onclick="Btn_save_Click" />
<asp:Button ID="Btn_cancel" runat="server" CssClass="button" Text="Cancel"
onclick="Btn_cancel_Click" CausesValidation="False"
/>
<asp:Button ID="Btn_back" runat="server" CssClass="button" Text="Back"
onclick="Btn_back_Click" CausesValidation="False" />
</td>
</tr>
</table>
</asp:Panel>
</td></tr>
</table>
<%----%>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
</td></tr>
</table>
</asp:Content></pre>
Master Page C#:-
<%@ Page Title="" Language="C#" MasterPageFile="~/Userwebpages.master" AutoEventWireup="true" CodeFile="User.aspx.cs" Inherits="Super_admin_User" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolderinNestedhead" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolderinNested" Runat="Server">
<h3 class="page-heading">User</h3>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always"
ChildrenAsTriggers="true" >
<ContentTemplate>
<table id="Usertable" cellspacing="20" align="center">
<%----%>
<tr><td class="txtfieldname">Branch :</td><td>
<asp:DropDownList ID="ddlbranchname"
CssClass="dropdownlist" runat="server"
DataTextField="Branch_name" DataValueField="Branch_Id" AutoPostBack="True"
onselectedindexchanged="ddlbranchname_SelectedIndexChanged">
</asp:DropDownList>
<asp:RequiredFieldValidator ID="Rfv_branchname" runat="server" Display="None" ErrorMessage="Please select Branch name " SetFocusOnError="true" ControlToValidate="ddlbranchname"></asp:RequiredFieldValidator>
</td>
<td class="txtfieldname">
User Type :</td>
<td>
<asp:DropDownList ID="ddlusertypesearching"
CssClass="dropdownlist" runat="server"
DataTextField="User_Typename" DataValueField="User_Type_Id"
onselectedindexchanged="ddlusertypesearch_SelectedIndexChanged"
AutoPostBack="True"></asp:DropDownList>
<asp:RequiredFieldValidator ID="Rfv_usertype" runat="server" Display="None" ErrorMessage="Please select user type " SetFocusOnError="true" ControlToValidate="ddlusertypesearching"></asp:RequiredFieldValidator>
</td>
</tr>
<%----%>
<tr><td colspan="4" align="left"> <asp:Button ID="Btn_AddnewUser" runat="server"
CssClass="button" Text="Add New user" onclick="Btn_AddnewUser_Click" />
<asp:HiddenField ID="Input_mode" runat="server" Value="I" />
<asp:HiddenField ID="User_Id" runat="server" />
</td></tr>
<tr><td colspan="4" style="height:400px; vertical-align:top; align:center;" >
<asp:GridView ID="GridView_BranchUsers" CssClass="GridViewStyle"
runat="server" AutoGenerateColumns="False"
onrowcommand="Gridview_branchusers_rowcommand"
onrowdatabound="Gridview_branchusers_databound">
<Columns>
<asp:TemplateField HeaderText="Sno" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:Label ID="lbl_sno" runat="server" Text="<%# Container.DataItemIndex+1 %>"></asp:Label>.
<asp:HiddenField ID="User_Id" runat="server" Value="<%# Bind('User_Id') %>" />
<asp:HiddenField ID="Usertypeid" runat="server" Value="<%# Bind('User_Type_Id') %>" />
<asp:HiddenField ID="Gender" runat="server" Value="<%# Bind('Gender') %>" />
<asp:HiddenField ID="Designation" runat="server" Value="<%# Bind('Designation') %>" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Branch Name" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:Label ID="lbl_branchname" runat="server" Text="<% #Bind('Branch_name') %>"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Firstname" HeaderText="First Name "
SortExpression="Firstname" />
<asp:BoundField DataField="Lastname" HeaderText="Last Name"
SortExpression="Lastname" />
<asp:BoundField DataField="Username" HeaderText="Username"
SortExpression="Username" />
<asp:BoundField DataField="Password" HeaderText="Password"
SortExpression="Password" />
<asp:TemplateField HeaderText="Active Status" ItemStyle-HorizontalAlign="Center" >
<ItemTemplate>
<asp:Label ID="User_Active" runat="server" Text="<% #Bind('Active') %>"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Edit">
<ItemTemplate> <asp:LinkButton ID="LinkButton1" runat="server" CommandName="Edit1" CommandArgument="<%# Container.DataItemIndex %>">Edit</asp:LinkButton></ItemTemplate>
</asp:TemplateField>
</Columns>
<HeaderStyle CssClass="GridViewHeaderStyle" />
<RowStyle CssClass="GridViewRowStyle" />
</asp:GridView>
<asp:Panel ID="Pnl_edituser" runat="server">
<table cellspacing="20" align="center" style=" vertical-align:top; text-align:center;">
<tr>
<td class="txtfieldname">
First Name :</td>
<td align="left">
<asp:TextBox ID="txtfirstname" runat="server" CssClass="txtbox"></asp:TextBox>
<ajaxtoolkit:FilteredTextBoxExtender
ID="FilteredTextBoxExtender1" runat="server" FilterType="LowercaseLetters, UppercaseLetters"
TargetControlID="txtfirstname">
</ajaxtoolkit:FilteredTextBoxExtender>
</td>
</tr>
<tr><td class="txtfieldname">Last Name :</td><td align="left">
<asp:TextBox ID="txtlastname" runat="server" CssClass="txtbox"></asp:TextBox>
<ajaxtoolkit:FilteredTextBoxExtender
ID="FilteredTextBoxExtender2" runat="server" FilterType="LowercaseLetters, UppercaseLetters"
TargetControlID="txtlastname">
</ajaxtoolkit:FilteredTextBoxExtender>
</td></tr>
<tr>
<td class="txtfieldname">
Gender</td>
<td align="left">
<asp:RadioButton ID="Rdo_male" runat="server" Checked="True"
GroupName="gender" Text="Male" />
<asp:RadioButton ID="Rdo_female" runat="server" GroupName="gender"
Text="Female" />
</td>
</tr>
<tr>
<td class="txtfieldname">
Designation</td>
<td align="left">
<asp:TextBox ID="txtdesignation" runat="server" CssClass="txtbox"></asp:TextBox>
<ajaxtoolkit:FilteredTextBoxExtender
ID="FilteredTextBoxExtender3" runat="server" FilterType="LowercaseLetters, UppercaseLetters"
TargetControlID="txtdesignation" ValidChars="_">
</ajaxtoolkit:FilteredTextBoxExtender>
</td>
</tr>
<tr>
<td class="txtfieldname">
Username :</td>
<td align="left">
<asp:TextBox ID="txtusername" runat="server" CssClass="txtbox"></asp:TextBox>
<ajaxtoolkit:FilteredTextBoxExtender
ID="FilteredTextBoxExtender4" runat="server" FilterType="LowercaseLetters, UppercaseLetters"
TargetControlID="txtusername">
</ajaxtoolkit:FilteredTextBoxExtender>
</td>
</tr>
<tr>
<td class="txtfieldname">
Password :
</td>
<td align="left">
<asp:TextBox ID="txtpwd" runat="server" CssClass="txtbox"></asp:TextBox>
</td>
</tr>
<tr>
<td class="txtfieldname">
Confirm Password :
</td>
<td align="left">
<asp:TextBox ID="txtcpwd" runat="server" CssClass="txtbox"></asp:TextBox>
</td>
</tr>
<tr>
<td class="txtfieldname">
User Account Status :</td>
<td align="left">
<asp:CheckBox ID="Chk_accountstatus" runat="server" />
</td>
</tr>
<tr>
<td align="center" colspan="2">
<asp:Button ID="Btn_save" runat="server" CssClass="button" Text="Save"
onclick="Btn_save_Click" />
<asp:Button ID="Btn_cancel" runat="server" CssClass="button" Text="Cancel"
onclick="Btn_cancel_Click" CausesValidation="False"
/>
<asp:Button ID="Btn_back" runat="server" CssClass="button" Text="Back"
onclick="Btn_back_Click" CausesValidation="False" />
</td>
</tr>
</table>
</asp:Panel>
</td></tr>
</table>
<%----%>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
|
|
|
|
|
How does the page now a button is clicked on the masterpage? The code behind of the buttons: where is that set?
In Word you can only store 2 bytes. That is why I use Writer.
|
|
|
|
|
Hi,
There is a online website of mine I would like to restrict users so that they will not able to save it offline using offline website copier software like HTTrack Website Copier and other similar software. Please help me.
|
|
|
|