예제 #1
0
        public void Add(Portafolio myObject)
        {
            var systemDate = DateTime.Now;
            //CREAR PROPUESTA
            var propuesta = new PropuestaBalanceo();

            propuesta.NumPropuesta = GetId(systemDate.Year, systemDate.Month);
            propuesta.PortafolioId = myObject.Id;
            propuesta.CreateDate   = systemDate;
            propuesta.EstadoId     = (int)Enums.EstadoType.Pendiente;
            propuesta.UserId       = myObject.UserId;
            propuesta.PropuestaBalanceoDetalles = new List <PropuestaBalanceoDetalle>();
            foreach (var solicitud in myObject.PropuestaBalanceoDetalleViews)
            {
                propuesta.PropuestaBalanceoDetalles.Add(new PropuestaBalanceoDetalle {
                    SolicitudRecursoDetalleId = solicitud.SolicitudRecursoId, Quantity = solicitud.Quantity
                });
            }

            var buRecurso                 = new BuRecurso();
            var buSolicitudRecurso        = new BuSolicitudRecurso();
            var buSolicitudRecursoDetalle = new BuSolicitudRecursoDetalle();
            var buAlmacenRecurso          = new BuAlmacenRecurso();

            var solicitudRecursoDetalles = new List <SolicitudRecursoDetalle>();
            var almacenRecursos          = new List <AlmacenRecurso>();

            foreach (var solicitudView in myObject.PropuestaBalanceoDetalleViews)
            {
                var solicitudRecurso = buSolicitudRecursoDetalle.GetById(solicitudView.SolicitudRecursoId);
                solicitudRecurso.Recurso = buRecurso.GetById(solicitudRecurso.RecursoId);

                //CHECK CANTIDAD ATENDIDA SOLICITUD
                if ((solicitudRecurso.QuantityAttended + solicitudView.Quantity) > solicitudRecurso.Quantity)
                {
                    throw new Exception($"La cantidad atendida ({solicitudRecurso.QuantityAttended}) mas la cantidad a asignar ({solicitudView.Quantity}) es mayor ({solicitudRecurso.QuantityAttended + solicitudView.Quantity}) a la cantidad solicitada ({solicitudRecurso.Quantity}) del recurso: {solicitudRecurso.Recurso.Id} - {solicitudRecurso.Recurso.Name}.");
                }
                solicitudRecurso.QuantityAttended += solicitudView.Quantity;
                solicitudRecursoDetalles.Add(solicitudRecurso);

                //CHECK CANTIDAD COMPROMETIDA ALMACEN RECURSO
                var almacenRecurso = buAlmacenRecurso.Get(x => x.AlmacenId.Equals(1) && x.RecursoId.Equals(solicitudRecurso.RecursoId));
                if ((almacenRecurso.StockCommitted + solicitudView.Quantity) > almacenRecurso.Stock)
                {
                    throw new Exception($"El stock comprometido ({almacenRecurso.StockCommitted}) mas la cantidad a asignar ({solicitudView.Quantity}) es mayor ({almacenRecurso.StockCommitted + solicitudView.Quantity}) a el stock ({almacenRecurso.Stock}) del recurso: {solicitudRecurso.Recurso.Id} - {solicitudRecurso.Recurso.Name}.");
                }
                almacenRecurso.StockCommitted += solicitudView.Quantity;
                almacenRecursos.Add(almacenRecurso);
            }

            Add(propuesta);
            foreach (var solicitudRecursoDetalle in solicitudRecursoDetalles)
            {
                buSolicitudRecursoDetalle.Update(solicitudRecursoDetalle);
            }
            foreach (var almacenRecurso in almacenRecursos)
            {
                buAlmacenRecurso.Update(almacenRecurso);
            }
        }
예제 #2
0
 public void Update(PropuestaBalanceo myObject)
 {
     try
     {
         _repository.Update(myObject);
         _unitOfWork.Commit();
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }