Deber03-UserManagement-Nicolás Toscano

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 14

FACULTAD DE INGENIERÍA EN SISTEMAS

ISWD813 Aplicaciones Web Avanzadas

Deber03-UserManagement
Nombre: Nicolás Toscano
Fecha: 5 de febrero de 2024

1. DESARROLLO
− Código
UserManagement.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/SiteAdmin.Master"


AutoEventWireup="true" CodeBehind="UserManagement.aspx.cs"
Inherits="WebAppPoliMusicV2.Admin.UserManagement" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent"
runat="server">
<div>
<h2>User Management</h2>
</div>
<div>
<asp:GridView ID="gridViewUser" runat="server"
AutoGenerateColumns="False"
DataKeyNames="ID_USER"
OnRowDataBound="gridViewUser_RowDataBound"
OnDataBound="gridViewUser_OnDataBound"
OnRowCancelingEdit="gridViewUser_RowCancelingEdit"
OnRowEditing="gridViewUser_RowEditing"
OnRowUpdating="gridViewUser_RowUpdating"
OnRowCommand="gridViewUser_RowCommand"
ShowFooter="True" OnRowDeleting="gridViewUser_RowDeleting">
<Columns>
<asp:TemplateField HeaderText="ID" HeaderStyle-
HorizontalAlign="Left">
<EditItemTemplate>
<asp:Label ID="lblId" runat="server" Text='<%#
Bind("ID_USER") %>'></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblId" runat="server" Text='<%#
Bind("ID_USER") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Username" HeaderStyle-
HorizontalAlign="Left">
<EditItemTemplate>
<asp:TextBox ID="txtUserName" runat="server" Text='<%#
Bind("USERNAME") %>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
FACULTAD DE INGENIERÍA EN SISTEMAS
ISWD813 Aplicaciones Web Avanzadas

<asp:TextBox ID="txtNewUserName" runat="server"


></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="lblUserName" runat="server" Text='<%#
Bind("USERNAME") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Email" HeaderStyle-
HorizontalAlign="Left">
<EditItemTemplate>
<asp:TextBox ID="txtEmail" runat="server" type="email"
Text='<%# Bind("EMAIL") %>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtNewEmail" runat="server"
type="email" ></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="lblEmail" runat="server" Text='<%#
Bind("EMAIL") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Password" HeaderStyle-
HorizontalAlign="Left">
<EditItemTemplate>
<asp:TextBox ID="txtPassword" runat="server"
TextMode="Password" Text='<%# Bind("PASSWORD") %>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtNewPassword" runat="server"
TextMode="Password"></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="lblPassword" runat="server"
Text='*****'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Birthday" HeaderStyle-
HorizontalAlign="Left">
<EditItemTemplate>
<asp:TextBox ID="txtBirthday" runat="server" Text='<%#
Eval("BIRTHDAY", "{0:dd/MM/yyyy}") %>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtNewBirthday" runat="server"
></asp:TextBox>
</FooterTemplate>
FACULTAD DE INGENIERÍA EN SISTEMAS
ISWD813 Aplicaciones Web Avanzadas

<ItemTemplate>
<asp:Label ID="lblBirthday" runat="server" Text='<%#
Eval("BIRTHDAY", "{0:dd/MM/yyyy}") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Type" HeaderStyle-
HorizontalAlign="Left">
<EditItemTemplate>
<asp:DropDownList ID="ddlType" runat="server">
<asp:ListItem Value="0">Normal</asp:ListItem>
<asp:ListItem Value="1">Administrator</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
<FooterTemplate>
<asp:DropDownList ID="ddlNewType" runat="server">
<asp:ListItem Value="0">Normal</asp:ListItem>
<asp:ListItem Value="1">Administrator</asp:ListItem>
</asp:DropDownList>
</FooterTemplate>
<ItemTemplate>
<asp:DropDownList ID="ddlType" Enabled="false"
runat="server">
<asp:ListItem>User Type</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Photo" HeaderStyle-


HorizontalAlign="Left">
<EditItemTemplate>
<asp:Image ID="imageEditUserPhoto" runat="server"
ImageUrl='<%# Eval("USER_PHOTO") %>' Width="25" Height="25" />
<asp:FileUpload ID="fileUploadUserPhoto" runat="server"
/>
</EditItemTemplate>
<ItemTemplate>
<asp:Image ID="imageUserPhoto" runat="server"
ImageUrl='<%# String.Format("{0}?{1}", Eval("USER_PHOTO"),
DateTime.Now.Ticks.ToString()) %>' Width="100" Height="100" />
</ItemTemplate>
<FooterTemplate>
<asp:FileUpload ID="fileUploadNewUserPhoto"
runat="server" />
</FooterTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Edit" ShowHeader="False"


HeaderStyle-HorizontalAlign="Left">
FACULTAD DE INGENIERÍA EN SISTEMAS
ISWD813 Aplicaciones Web Avanzadas

<EditItemTemplate>
<asp:LinkButton ID="lbkUpdate" runat="server"
CausesValidation="True" CommandName="Update" Text="Update"></asp:LinkButton>
<asp:LinkButton ID="lnkCancel" runat="server"
CausesValidation="False" CommandName="Cancel"
Text="Cancel"></asp:LinkButton>
</EditItemTemplate>
<FooterTemplate>
<asp:LinkButton ID="lnkAdd" runat="server"
CausesValidation="False" CommandName="Insert"
Text="Insert"></asp:LinkButton>
</FooterTemplate>
<ItemTemplate>
<asp:LinkButton ID="lnkEdit" runat="server"
CausesValidation="False" CommandName="Edit" Text="Edit"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>

<asp:CommandField HeaderText="Delete" ShowDeleteButton="True"


ShowHeader="True" />
</Columns>
</asp:GridView>

</div>
<div>
<asp:Panel ID="frmConfirmation" Visible="true" Runat="server">
<asp:Label id="lblMessage" ForeColor="Red" Font-Bold="true"
Runat="server"></asp:Label>
</asp:Panel>
</div>

</asp:Content>

UserManagement.aspx.cs

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WebAppPoliMusicV2.ServiceReferenceUser;
FACULTAD DE INGENIERÍA EN SISTEMAS
ISWD813 Aplicaciones Web Avanzadas

using WebAppPoliMusicV2.Util;

namespace WebAppPoliMusicV2.Admin
{
public partial class UserManagement : System.Web.UI.Page
{
int userId;
User user;

protected void Page_Load(object sender, EventArgs e)


{
if (!string.IsNullOrEmpty(Request.QueryString["uid"]))
userId = Convert.ToInt32(Request.QueryString["uid"]);
else
//userId = Convert.ToInt32(Session[Constant.USER]);
//userId = Convert.ToInt32(Request.QueryString["uid"]);
user = (User)Session[Constants.USER];
userId = user.Id;
if (!Page.IsPostBack)
{
BindData();
}
lblMessage.Text = string.Empty;
}
private void BindData()
{
DataSet dsUser = new
ServiceReferenceUser.WebServiceUserSoapClient().Read();
if (dsUser != null && dsUser.Tables.Count > 0)
{
DataTable dtUser = dsUser.Tables[0];
if (dtUser != null && dtUser.Rows.Count > 0)
{
gridViewUser.DataSource = dtUser;
gridViewUser.DataBind();
}
else
{
dtUser.Rows.Add(dtUser.NewRow());
gridViewUser.DataSource = dtUser;
gridViewUser.DataBind();
int columncount = gridViewUser.Rows[0].Cells.Count;
gridViewUser.Rows[0].Cells.Clear();
gridViewUser.Rows[0].Cells.Add(new TableCell());
gridViewUser.Rows[0].Cells[0].ColumnSpan = columncount;
gridViewUser.Rows[0].Cells[0].Text = "No Records Found";
}
}
FACULTAD DE INGENIERÍA EN SISTEMAS
ISWD813 Aplicaciones Web Avanzadas

}
protected void gridViewUser_RowDataBound(object sender,
GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType
== DataControlRowType.Footer)
{
DropDownList ddlType = e.Row.FindControl(e.Row.RowState ==
DataControlRowState.Edit ? "ddlType" : "ddlNewType") as DropDownList;

if (ddlType != null)
{
// Assuming that you have a DataTable as the DataSource
for the GridView
DataRowView drv = e.Row.DataItem as DataRowView;

if (drv != null)
{
// Assuming that "USER_TYPE" is the column name in
your DataTable
if (drv.Row.Table.Columns.Contains("USER_TYPE"))
{
int userTypeValue =
Convert.ToInt32(drv["USER_TYPE"]);

// Set the selected value based on the


userTypeValue
ddlType.SelectedValue =
userTypeValue.ToString();
}
}
}
}
}

protected void gridViewUser_OnDataBound(object sender, EventArgs e)


{

}
protected void gridViewUser_RowEditing(object sender,
GridViewEditEventArgs e)
{
gridViewUser.EditIndex = e.NewEditIndex;
BindData();
}
protected void gridViewUser_RowCancelingEdit(object sender,
GridViewCancelEditEventArgs e)
FACULTAD DE INGENIERÍA EN SISTEMAS
ISWD813 Aplicaciones Web Avanzadas

{
gridViewUser.EditIndex = -1;
BindData();
}

protected void gridViewUser_RowCommand(object sender,


GridViewCommandEventArgs e)
{
if (e.CommandName.Equals("Insert"))
{

// Access the controls in the footer template for inserting


TextBox txtNewUserName =
(TextBox)gridViewUser.FooterRow.FindControl("txtNewUserName");
TextBox txtNewEmail =
(TextBox)gridViewUser.FooterRow.FindControl("txtNewEmail");
TextBox txtNewPassword =
(TextBox)gridViewUser.FooterRow.FindControl("txtNewPassword");
TextBox txtNewBirthday =
(TextBox)gridViewUser.FooterRow.FindControl("txtNewBirthday");
DropDownList ddlNewType =
(DropDownList)gridViewUser.FooterRow.FindControl("ddlNewType");
FileUpload fileUploadNewUserPhoto =
(FileUpload)gridViewUser.FooterRow.FindControl("fileUploadNewUserPhoto");

string messageValidations = string.Empty;


string userName = txtNewUserName.Text;
string password = txtNewPassword.Text;
string email = txtNewEmail.Text;
string birthday = string.Empty;
if (txtNewBirthday.Text != string.Empty)
{
//birthday = DateTime.ParseExact(txtBirthDate.Text,
"yyyy-MM-dd", null).ToString();
DateTime d;
if (DateTime.TryParseExact(txtNewBirthday.Text,
"dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None, out d))
{
birthday = d.ToString("yyyy-MM-dd");
}
}
string photoName = fileUploadNewUserPhoto.FileName;
int type = Convert.ToInt32(ddlNewType.SelectedValue);

string newImageName = userName.Replace(" ", string.Empty);


FACULTAD DE INGENIERÍA EN SISTEMAS
ISWD813 Aplicaciones Web Avanzadas

string strImageFolder =
ConfigurationManager.AppSettings["userPhotoPath"];
string strFileNameExtension =
Path.GetExtension(fileUploadNewUserPhoto.FileName);
string newFileNameWithExtension = strImageFolder +
newImageName + strFileNameExtension;

User user = new User();


user.Name = userName;
user.Email = email;
user.Password = password;
user.Birthday = Convert.ToDateTime(birthday);
user.Type = type;
user.Photo = newFileNameWithExtension;

messageValidations = UserFieldsRequiredValidations(user);
if (messageValidations != string.Empty)
{
lblMessage.Text = messageValidations;
return;
}
messageValidations = new
ServiceReferenceUser.WebServiceUserSoapClient().ValidationsDuplicated(user);
if (messageValidations != string.Empty)
{
lblMessage.Text = messageValidations;
return;
}
if (fileUploadNewUserPhoto.HasFile)
{
messageValidations = new
FileManagement().SaveImageOnServer(fileUploadNewUserPhoto, strImageFolder,
newImageName);
}
else
{
messageValidations = new
FileManagement().SaveDefaultImageOnServer(strImageFolder, newImageName);
user.Photo += ".jpg";
}
if (messageValidations != string.Empty)
{
lblMessage.Text = messageValidations;
return;
}
user.Password = Util.Hash.GeneratePasswordHash(password);
new
ServiceReferenceUser.WebServiceUserSoapClient().AddUser(user);
FACULTAD DE INGENIERÍA EN SISTEMAS
ISWD813 Aplicaciones Web Avanzadas

lblMessage.Text = string.Empty;

BindData();
gridViewUser.SelectedIndex = -1;
}
}

public string UserFieldsRequiredValidations(User user)


{
if (user.Name == string.Empty)
{
return "Username is required!";
}
if (user.Email == string.Empty)
{
return "Email is required!";
}
if (user.Password == string.Empty)
{
return "Password is required!";
}
if (!Util.Validator.IsValidEmail(user.Email))
{
return "Email is not valid!";
}
return string.Empty;
}

protected void gridViewUser_RowUpdating(object sender,


GridViewUpdateEventArgs e)
{
string messageValidations = string.Empty;
Label lblId = gridViewUser.Rows[e.RowIndex].FindControl("lblId")
as Label;
TextBox txtUserName =
(TextBox)gridViewUser.Rows[e.RowIndex].FindControl("txtUserName");
TextBox txtEmail =
(TextBox)gridViewUser.Rows[e.RowIndex].FindControl("txtEmail");
TextBox txtPassword =
(TextBox)gridViewUser.Rows[e.RowIndex].FindControl("txtPassword");
TextBox txtBirthday =
(TextBox)gridViewUser.Rows[e.RowIndex].FindControl("txtBirthday");
DropDownList ddlType =
(DropDownList)gridViewUser.Rows[e.RowIndex].FindControl("ddlType");
FileUpload fileUploadUserPhoto =
(FileUpload)gridViewUser.Rows[e.RowIndex].FindControl("fileUploadUserPhoto")
;
FACULTAD DE INGENIERÍA EN SISTEMAS
ISWD813 Aplicaciones Web Avanzadas

int userId = Convert.ToInt32(lblId.Text);


string userName = txtUserName.Text;
string userEmail = txtEmail.Text;
string userPassword = txtPassword.Text;
string userBirthday = txtBirthday.Text;
int userType = Convert.ToInt32(ddlType.SelectedValue);

string title = txtUserName.Text;

string newImageName = title.Replace(" ", string.Empty);

System.Web.UI.WebControls.Image imageEditPlaylistPhoto =
(System.Web.UI.WebControls.Image)gridViewUser.Rows[e.RowIndex].FindControl("
imageEditUserPhoto");
string strImageFolder =
ConfigurationManager.AppSettings["playlistFolderPath"];
string strFileNameExtension =
Path.GetExtension(fileUploadUserPhoto.FileName);
string newFileNameWithExtension = strImageFolder + newImageName
+ strFileNameExtension;

User user = new User();


user.Id = userId;
user.Name = userName;
user.Email = userEmail;
user.Password = userPassword;
user.Birthday = Convert.ToDateTime(userBirthday);
user.Type = userType;

if (fileUploadUserPhoto.HasFile)
{
user.Photo = newFileNameWithExtension;
}
else
{
user.Photo = imageEditPlaylistPhoto.ImageUrl;
}

messageValidations = UserValidations(user);
if (messageValidations != string.Empty)
{
lblMessage.Text = messageValidations;
return;
}
int returnValue = new
ServiceReferenceUser.WebServiceUserSoapClient().CheckExistUser(user.Name);
if (returnValue != 0)
{
FACULTAD DE INGENIERÍA EN SISTEMAS
ISWD813 Aplicaciones Web Avanzadas

lblMessage.Text = "User already registered!";


return;
}

new
ServiceReferenceUser.WebServiceUserSoapClient().UpdateUser(user.Id,
user.Name, user.Password, user.Email, user.Birthday, user.Photo ,user.Type);
lblMessage.Text = string.Empty;
gridViewUser.EditIndex = -1;
BindData();
}

protected void gridViewUser_RowDeleting(object sender,


GridViewDeleteEventArgs e)
{
int id =
Convert.ToInt32(gridViewUser.DataKeys[e.RowIndex].Values[0]);
new
ServiceReferenceUser.WebServiceUserSoapClient().DeleteUser(id);
BindData();
}

protected void gridViewUser_SelectedIndexChanged(object sender,


EventArgs e)
{

public string UserValidations(ServiceReferenceUser.User user)


{
if (user.Name == string.Empty)
{
return "User Name is required!"; ;
}
int returnValue = new
ServiceReferenceUser.WebServiceUserSoapClient().CheckExistUser(user.Name);
if (returnValue != 0)
{
return "User already exist!";
}
return string.Empty;
}
}

}
FACULTAD DE INGENIERÍA EN SISTEMAS
ISWD813 Aplicaciones Web Avanzadas

2. Operaciones CRUD
− READ
FACULTAD DE INGENIERÍA EN SISTEMAS
ISWD813 Aplicaciones Web Avanzadas

− CREATE

− UPDATE
FACULTAD DE INGENIERÍA EN SISTEMAS
ISWD813 Aplicaciones Web Avanzadas

− DELETE

You might also like