orden etapas
This commit is contained in:
@@ -29,6 +29,12 @@ namespace SIG.Web.AppCode.Contracts.Fraccionamientos
|
||||
string domainName);
|
||||
DbResult<List<FraccionamientoEtapaTramiteModel>> ListStageProcedures(int developmentId, int executingUser, string domainName);
|
||||
DbResult<int> SaveStage(FraccionamientoEtapaModel stage, int executingUser, string domainName);
|
||||
DbResult<bool> MoveStageOrder(
|
||||
int stageId,
|
||||
int referenceStageId,
|
||||
bool placeAfter,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
DbResult<bool> DeleteStage(int stageId, int executingUser, string domainName);
|
||||
DbResult<List<FraccionamientoLoteModel>> ListLots(
|
||||
int developmentId,
|
||||
|
||||
@@ -32,6 +32,12 @@ namespace SIG.Web.AppCode.Contracts.Fraccionamientos
|
||||
string domainName);
|
||||
DbResult<List<FraccionamientoEtapaTramiteModel>> ListStageProcedures(int developmentId, int executingUser, string domainName);
|
||||
DbResult<int> SaveStage(FraccionamientoEtapaModel stage, int executingUser, string domainName);
|
||||
DbResult<bool> MoveStageOrder(
|
||||
int stageId,
|
||||
int referenceStageId,
|
||||
bool placeAfter,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
DbResult<bool> DeleteStage(int stageId, int executingUser, string domainName);
|
||||
DbResult<List<FraccionamientoLoteModel>> ListLots(
|
||||
int developmentId,
|
||||
|
||||
@@ -205,11 +205,41 @@ namespace SIG.Web.AppCode.Repositories.Fraccionamientos
|
||||
StoredProcedureCommand.AddInput(command, "@CveFraccionamiento", stage.CveFraccionamiento, DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(command, "@Etapa", stage.Etapa, DbType.String);
|
||||
StoredProcedureCommand.AddInput(command, "@Hectareas", stage.Hectareas, DbType.Decimal);
|
||||
StoredProcedureCommand.AddInput(command, "@Orden", stage.Orden, DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(command, "@EsActivo", stage.EsActivo, DbType.Boolean);
|
||||
});
|
||||
}
|
||||
|
||||
public DbResult<bool> MoveStageOrder(
|
||||
int stageId,
|
||||
int referenceStageId,
|
||||
bool placeAfter,
|
||||
int executingUser,
|
||||
string domainName)
|
||||
{
|
||||
return Execute(
|
||||
"dbo.PA_Fraccionamientos_EtapaOrdenMove",
|
||||
executingUser,
|
||||
domainName,
|
||||
command =>
|
||||
{
|
||||
StoredProcedureCommand.AddInput(
|
||||
command,
|
||||
"@CveFraccionamientoEtapa",
|
||||
stageId,
|
||||
DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(
|
||||
command,
|
||||
"@CveFraccionamientoEtapaReferencia",
|
||||
referenceStageId,
|
||||
DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(
|
||||
command,
|
||||
"@ColocarDespues",
|
||||
placeAfter,
|
||||
DbType.Boolean);
|
||||
});
|
||||
}
|
||||
|
||||
public DbResult<bool> DeleteStage(int stageId, int executingUser, string domainName)
|
||||
{
|
||||
return Execute(
|
||||
|
||||
@@ -305,41 +305,176 @@ namespace SIG.Web.AppCode.Services.Fraccionamientos
|
||||
bool isNewStage = stage.CveFraccionamientoEtapa <= 0;
|
||||
stage.Etapa = stage.Etapa.Trim();
|
||||
|
||||
Func<DbResult<int>> saveAction = () => _repository.SaveStage(
|
||||
stage,
|
||||
executingUser,
|
||||
domainName);
|
||||
|
||||
if (isNewStage)
|
||||
using (var transaction = new TransactionLogic())
|
||||
{
|
||||
return ExecuteInTransaction(
|
||||
() => _repository.Get(
|
||||
stage.CveFraccionamiento,
|
||||
FraccionamientoEtapaModel previous = null;
|
||||
int clientId;
|
||||
|
||||
if (isNewStage)
|
||||
{
|
||||
DbResult<FraccionamientoModel> developmentResult =
|
||||
_repository.Get(
|
||||
stage.CveFraccionamiento,
|
||||
executingUser,
|
||||
domainName);
|
||||
|
||||
if (!developmentResult.Success ||
|
||||
developmentResult.Data == null)
|
||||
{
|
||||
return DbResult<int>.Fail(
|
||||
developmentResult.UserMessage,
|
||||
developmentResult.TechnicalMessage,
|
||||
developmentResult.Exception);
|
||||
}
|
||||
|
||||
clientId = developmentResult.Data.CveCliente;
|
||||
}
|
||||
else
|
||||
{
|
||||
DbResult<FraccionamientoEtapaModel> previousResult =
|
||||
_repository.GetStage(
|
||||
stage.CveFraccionamientoEtapa,
|
||||
executingUser,
|
||||
domainName);
|
||||
|
||||
if (!previousResult.Success ||
|
||||
previousResult.Data == null)
|
||||
{
|
||||
return DbResult<int>.Fail(
|
||||
previousResult.UserMessage,
|
||||
previousResult.TechnicalMessage,
|
||||
previousResult.Exception);
|
||||
}
|
||||
|
||||
previous = previousResult.Data;
|
||||
clientId = previous.CveCliente;
|
||||
}
|
||||
|
||||
DbResult<int> saveResult = _repository.SaveStage(
|
||||
stage,
|
||||
executingUser,
|
||||
domainName);
|
||||
|
||||
if (!saveResult.Success)
|
||||
{
|
||||
return saveResult;
|
||||
}
|
||||
|
||||
DbResult<FraccionamientoEtapaModel> currentResult =
|
||||
_repository.GetStage(
|
||||
saveResult.Data,
|
||||
executingUser,
|
||||
domainName),
|
||||
saveAction,
|
||||
(development, stageId) => SingleEvent(
|
||||
domainName);
|
||||
|
||||
if (!currentResult.Success || currentResult.Data == null)
|
||||
{
|
||||
return DbResult<int>.Fail(
|
||||
currentResult.UserMessage,
|
||||
currentResult.TechnicalMessage,
|
||||
currentResult.Exception);
|
||||
}
|
||||
|
||||
DbResult<bool> auditResult = RegisterEvents(
|
||||
SingleEvent(
|
||||
FraccionamientoBitacoraFactory.CreateStage(
|
||||
null,
|
||||
stage,
|
||||
stageId,
|
||||
development.CveCliente,
|
||||
BitacoraTipoMovimiento.Agregado)));
|
||||
previous,
|
||||
currentResult.Data,
|
||||
saveResult.Data,
|
||||
clientId,
|
||||
isNewStage
|
||||
? BitacoraTipoMovimiento.Agregado
|
||||
: BitacoraTipoMovimiento.Editado)));
|
||||
|
||||
if (!auditResult.Success)
|
||||
{
|
||||
return DbResult<int>.Fail(
|
||||
auditResult.UserMessage,
|
||||
auditResult.TechnicalMessage,
|
||||
auditResult.Exception);
|
||||
}
|
||||
|
||||
transaction.Commit();
|
||||
return saveResult;
|
||||
}
|
||||
}
|
||||
|
||||
public DbResult<bool> MoveStageOrder(
|
||||
int stageId,
|
||||
int referenceStageId,
|
||||
bool placeAfter,
|
||||
int executingUser,
|
||||
string domainName)
|
||||
{
|
||||
if (stageId <= 0 ||
|
||||
referenceStageId <= 0 ||
|
||||
stageId == referenceStageId)
|
||||
{
|
||||
return Fail<bool>(
|
||||
"Seleccione una posición válida para mover la etapa.");
|
||||
}
|
||||
|
||||
return ExecuteInTransaction(
|
||||
() => _repository.GetStage(
|
||||
stage.CveFraccionamientoEtapa,
|
||||
executingUser,
|
||||
domainName),
|
||||
saveAction,
|
||||
(previous, stageId) => SingleEvent(
|
||||
FraccionamientoBitacoraFactory.CreateStage(
|
||||
previous,
|
||||
stage,
|
||||
using (var transaction = new TransactionLogic())
|
||||
{
|
||||
DbResult<FraccionamientoEtapaModel> previousResult =
|
||||
_repository.GetStage(
|
||||
stageId,
|
||||
previous.CveCliente,
|
||||
BitacoraTipoMovimiento.Editado)));
|
||||
executingUser,
|
||||
domainName);
|
||||
|
||||
if (!previousResult.Success || previousResult.Data == null)
|
||||
{
|
||||
return DbResult<bool>.Fail(
|
||||
previousResult.UserMessage,
|
||||
previousResult.TechnicalMessage,
|
||||
previousResult.Exception);
|
||||
}
|
||||
|
||||
DbResult<bool> moveResult = _repository.MoveStageOrder(
|
||||
stageId,
|
||||
referenceStageId,
|
||||
placeAfter,
|
||||
executingUser,
|
||||
domainName);
|
||||
|
||||
if (!moveResult.Success)
|
||||
{
|
||||
return moveResult;
|
||||
}
|
||||
|
||||
DbResult<FraccionamientoEtapaModel> currentResult =
|
||||
_repository.GetStage(
|
||||
stageId,
|
||||
executingUser,
|
||||
domainName);
|
||||
|
||||
if (!currentResult.Success || currentResult.Data == null)
|
||||
{
|
||||
return DbResult<bool>.Fail(
|
||||
currentResult.UserMessage,
|
||||
currentResult.TechnicalMessage,
|
||||
currentResult.Exception);
|
||||
}
|
||||
|
||||
DbResult<bool> auditResult = RegisterEvents(
|
||||
SingleEvent(
|
||||
FraccionamientoBitacoraFactory.CreateStage(
|
||||
previousResult.Data,
|
||||
currentResult.Data,
|
||||
stageId,
|
||||
previousResult.Data.CveCliente,
|
||||
BitacoraTipoMovimiento.Editado)));
|
||||
|
||||
if (!auditResult.Success)
|
||||
{
|
||||
return DbResult<bool>.Fail(
|
||||
auditResult.UserMessage,
|
||||
auditResult.TechnicalMessage,
|
||||
auditResult.Exception);
|
||||
}
|
||||
|
||||
transaction.Commit();
|
||||
return moveResult;
|
||||
}
|
||||
}
|
||||
|
||||
public DbResult<bool> DeleteStage(
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
<link href='<%= ResolveUrl("~/Styles/FraccionamientoDetalle.css?v=20260814-5") %>'
|
||||
rel="stylesheet"
|
||||
type="text/css" />
|
||||
<link href='<%= ResolveUrl("~/Styles/CatalogosTramites.css") %>'
|
||||
rel="stylesheet"
|
||||
type="text/css" />
|
||||
</asp:Content>
|
||||
|
||||
<asp:Content ID="ContentActions" ContentPlaceHolderID="A" runat="server">
|
||||
@@ -216,6 +219,15 @@
|
||||
CssClass="table table-hover Widthall"
|
||||
OnRowCommand="GvStages_RowCommand">
|
||||
<Columns>
|
||||
<asp:TemplateField HeaderText="" ItemStyle-CssClass="tra-order-cell">
|
||||
<ItemTemplate>
|
||||
<span class="tra-order-handle"
|
||||
data-sig-order-id='<%# Eval("CveFraccionamientoEtapa") %>'
|
||||
title="Arrastrar para cambiar el orden">
|
||||
<i class="fa fa-bars"></i>
|
||||
</span>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
<asp:BoundField DataField="Etapa" HeaderText="Etapa" />
|
||||
<asp:BoundField DataField="Hectareas"
|
||||
HeaderText="Hectáreas"
|
||||
@@ -246,7 +258,6 @@
|
||||
</span>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
<asp:BoundField DataField="Orden" HeaderText="Orden" />
|
||||
<asp:TemplateField HeaderText="Acciones" ItemStyle-Width="120">
|
||||
<ItemTemplate>
|
||||
<asp:LinkButton ID="BtnAddLots"
|
||||
@@ -301,6 +312,12 @@
|
||||
</div>
|
||||
</EmptyDataTemplate>
|
||||
</asp:GridView>
|
||||
<asp:HiddenField ID="HfStageOrderMove" runat="server" />
|
||||
<asp:LinkButton ID="BtnStageOrderMove"
|
||||
runat="server"
|
||||
CausesValidation="false"
|
||||
Style="display: none;"
|
||||
OnClick="BtnStageOrderMove_Click" />
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -808,14 +825,6 @@
|
||||
MaxLength="30" />
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Orden</label>
|
||||
<asp:TextBox ID="TxtStageOrder"
|
||||
runat="server"
|
||||
CssClass="form-control"
|
||||
MaxLength="6" />
|
||||
</div>
|
||||
|
||||
<asp:CheckBox ID="ChkStageActive"
|
||||
runat="server"
|
||||
Text=" Etapa activa" />
|
||||
@@ -1300,6 +1309,8 @@
|
||||
</asp:Content>
|
||||
|
||||
<asp:Content ID="ContentScripts" ContentPlaceHolderID="J" runat="server">
|
||||
<script src='<%= ResolveUrl("~/Scripts/CatalogosTramites.js") %>'
|
||||
type="text/javascript"></script>
|
||||
<script>
|
||||
window.SIGDetail = window.SIGDetail || {};
|
||||
|
||||
|
||||
@@ -149,6 +149,8 @@ namespace SIG.Web.Pages.Fraccionamientos
|
||||
#endregion
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
ConfigureStageOrderGrid();
|
||||
|
||||
ScriptManager scriptManager = ScriptManager.GetCurrent(Page);
|
||||
|
||||
if (scriptManager != null)
|
||||
@@ -400,16 +402,6 @@ namespace SIG.Web.Pages.Fraccionamientos
|
||||
return;
|
||||
}
|
||||
|
||||
int order;
|
||||
|
||||
if (!int.TryParse(
|
||||
TxtStageOrder.Text,
|
||||
out order))
|
||||
{
|
||||
ShowStageError("Capture un orden válido.");
|
||||
return;
|
||||
}
|
||||
|
||||
var stage = new FraccionamientoEtapaModel
|
||||
{
|
||||
CveFraccionamientoEtapa =
|
||||
@@ -417,7 +409,6 @@ namespace SIG.Web.Pages.Fraccionamientos
|
||||
CveFraccionamiento = CveFraccionamientoActual,
|
||||
Etapa = TxtStage.Text,
|
||||
Hectareas = hectares,
|
||||
Orden = order,
|
||||
EsActivo = ChkStageActive.Checked
|
||||
};
|
||||
|
||||
@@ -731,6 +722,54 @@ namespace SIG.Web.Pages.Fraccionamientos
|
||||
}
|
||||
}
|
||||
|
||||
protected void BtnStageOrderMove_Click(
|
||||
object sender,
|
||||
EventArgs e)
|
||||
{
|
||||
int stageId;
|
||||
int referenceStageId;
|
||||
bool placeAfter;
|
||||
|
||||
if (!TryParseStageOrderMove(
|
||||
HfStageOrderMove.Value,
|
||||
out stageId,
|
||||
out referenceStageId,
|
||||
out placeAfter))
|
||||
{
|
||||
Alert(
|
||||
"No fue posible determinar la nueva posición de la etapa.",
|
||||
TipoMensaje.MsgAdvertencia);
|
||||
BindStages();
|
||||
UpDetailTabs.Update();
|
||||
return;
|
||||
}
|
||||
|
||||
DbResult<bool> result =
|
||||
AppServices.FraccionamientoService.MoveStageOrder(
|
||||
stageId,
|
||||
referenceStageId,
|
||||
placeAfter,
|
||||
CurrentUser.CveUsuario,
|
||||
CurrentUser.NombreDominio);
|
||||
|
||||
HfStageOrderMove.Value = string.Empty;
|
||||
BindStages();
|
||||
UpDetailTabs.Update();
|
||||
|
||||
if (result.Success)
|
||||
{
|
||||
RefreshBitacoraDetalle();
|
||||
}
|
||||
|
||||
Alert(
|
||||
result.Success
|
||||
? "Orden de etapas actualizado correctamente."
|
||||
: result.UserMessage,
|
||||
result.Success
|
||||
? TipoMensaje.ToastExito
|
||||
: TipoMensaje.MsgAdvertencia);
|
||||
}
|
||||
|
||||
protected void GvLots_RowCommand(
|
||||
object sender,
|
||||
GridViewCommandEventArgs e)
|
||||
@@ -864,8 +903,6 @@ namespace SIG.Web.Pages.Fraccionamientos
|
||||
TxtStage.Text = stage.Etapa;
|
||||
TxtStageHectares.Text =
|
||||
FormatDecimal(stage.Hectareas);
|
||||
TxtStageOrder.Text = stage.Orden
|
||||
.ToString(CultureInfo.InvariantCulture);
|
||||
ChkStageActive.Checked = stage.EsActivo;
|
||||
LitStageTitle.Text = "Editar etapa";
|
||||
|
||||
@@ -1832,10 +1869,45 @@ namespace SIG.Web.Pages.Fraccionamientos
|
||||
CveFraccionamientoEtapaActual = 0;
|
||||
TxtStage.Text = string.Empty;
|
||||
TxtStageHectares.Text = string.Empty;
|
||||
TxtStageOrder.Text = "0";
|
||||
ChkStageActive.Checked = true;
|
||||
}
|
||||
|
||||
private void ConfigureStageOrderGrid()
|
||||
{
|
||||
GvStages.Attributes["data-sig-order-grid"] = "1";
|
||||
GvStages.Attributes["data-sig-order-payload"] =
|
||||
HfStageOrderMove.ClientID;
|
||||
GvStages.Attributes["data-sig-order-postback"] =
|
||||
BtnStageOrderMove.ClientID;
|
||||
}
|
||||
|
||||
private static bool TryParseStageOrderMove(
|
||||
string payload,
|
||||
out int stageId,
|
||||
out int referenceStageId,
|
||||
out bool placeAfter)
|
||||
{
|
||||
stageId = 0;
|
||||
referenceStageId = 0;
|
||||
placeAfter = false;
|
||||
|
||||
string[] parts = (payload ?? string.Empty).Split('|');
|
||||
|
||||
if (parts.Length != 3 ||
|
||||
!int.TryParse(parts[0], out stageId) ||
|
||||
!int.TryParse(parts[1], out referenceStageId) ||
|
||||
(parts[2] != "0" && parts[2] != "1"))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
placeAfter = parts[2] == "1";
|
||||
|
||||
return stageId > 0 &&
|
||||
referenceStageId > 0 &&
|
||||
stageId != referenceStageId;
|
||||
}
|
||||
|
||||
private void ShowEditError(string message)
|
||||
{
|
||||
LblEditMessage.Text = Server.HtmlEncode(
|
||||
|
||||
@@ -173,6 +173,24 @@ namespace SIG.Web.Pages.Fraccionamientos
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.GridView GvStages;
|
||||
|
||||
/// <summary>
|
||||
/// HfStageOrderMove control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.HiddenField HfStageOrderMove;
|
||||
|
||||
/// <summary>
|
||||
/// BtnStageOrderMove control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.LinkButton BtnStageOrderMove;
|
||||
|
||||
/// <summary>
|
||||
/// BtnNewProcedure control.
|
||||
/// </summary>
|
||||
@@ -482,15 +500,6 @@ namespace SIG.Web.Pages.Fraccionamientos
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.TextBox TxtStageHectares;
|
||||
|
||||
/// <summary>
|
||||
/// TxtStageOrder control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.TextBox TxtStageOrder;
|
||||
|
||||
/// <summary>
|
||||
/// ChkStageActive control.
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user