/// <summary> /// Crea un nuevo empleado en el sistema /// </summary> /// <param name="empleado">Empleado a crear</param> public void Crear(Empleado empleado) { ValidarEmpleado(empleado); Datos.LocalidadesDAL dalLocalidades = dal.ObtenerLocalidadesDAL(); Datos.Localidad localidadDAL = dalLocalidades.Obtener(empleado.Localidad.Id); if (localidadDAL == null) { throw new OBMCateringException(string.Format(Resources.BL_Validaciones_LocalidadInvalida, empleado.Localidad.Nombre)); } Datos.Empleado empleadoDAL = new Datos.Empleado { CUIT = empleado.CUIT, Nombre = empleado.Nombre, FechaNacimiento = empleado.FechaNacimiento, Domicilio = empleado.Domicilio, Localidad = localidadDAL, CodigoPostal = empleado.CodigoPostal, Telefono = empleado.Telefono, Email = empleado.Email, FechaAlta = empleado.FechaAlta, FechaBaja = empleado.FechaBaja }; Datos.EmpleadosDAL dalEmpleados = dal.ObtenerEmpleadosDAL(); dalEmpleados.Crear(empleadoDAL); dal.Guardar(); }
/// <summary> /// Crea un nuevo usuario en el sistema /// </summary> /// <param name="usuario">Usuario a crear</param> public void Crear(Usuario usuario) { ValidarUsuario(usuario); Datos.UsuariosDAL dalUsuarios = dal.ObtenerUsuariosDAL(); Datos.PerfilUsuario perfilDAL = dalUsuarios.ObtenerPerfil(usuario.Perfil.ToString()); if (perfilDAL == null) { throw new OBMCateringException(string.Format(Resources.UsuariosBL_Validaciones_PerfilInvalido, usuario.Perfil)); } Datos.Usuario usuarioDAL = new Datos.Usuario { Nick = usuario.Nick, Nombre = usuario.Nombre, Email = usuario.Email, Password = usuario.Password, Perfil = perfilDAL, CambiarPassword = usuario.CambiarPassword }; dalUsuarios.Crear(usuarioDAL); dal.Guardar(); }
/// <summary> /// Crea un nuevo proveedor en el sistema /// </summary> /// <param name="proveedor">Proveedor a crear</param> public void Crear(Proveedor proveedor) { ValidarProveedor(proveedor); Datos.LocalidadesDAL dalLocalidades = dal.ObtenerLocalidadesDAL(); Datos.Localidad localidadDAL = dalLocalidades.Obtener(proveedor.Localidad.Id); if (localidadDAL == null) { throw new OBMCateringException(string.Format(Resources.BL_Validaciones_LocalidadInvalida, proveedor.Localidad.Nombre)); } Datos.Proveedor proveedorDAL = new Datos.Proveedor { CUIT = proveedor.CUIT, Nombre = proveedor.Nombre, Domicilio = proveedor.Domicilio, Localidad = localidadDAL, CodigoPostal = proveedor.CodigoPostal, Telefono = proveedor.Telefono, Email = proveedor.Email, FechaAlta = proveedor.FechaAlta, FechaBaja = proveedor.FechaBaja }; Datos.ProveedoresDAL dalProveedores = dal.ObtenerProveedoresDAL(); dalProveedores.Crear(proveedorDAL); dal.Guardar(); }
/// <summary> /// Crea una nueva orden de pago en el sistema, lo que implica que una determinada orden de compra ha sido finalizada /// </summary> /// <param name="ordenPago">Orden de pago a crear</param> public void Crear(OrdenPago ordenPago) { ValidarOrdenPago(ordenPago); Datos.ProveedoresDAL dalProveedores = dal.ObtenerProveedoresDAL(); Datos.Proveedor proveedorDAL = dalProveedores.Obtener(ordenPago.Proveedor.CUIT); if (proveedorDAL == null) { throw new OBMCateringException(string.Format(Resources.BL_Validaciones_ProveedorInvalido, ordenPago.Proveedor.CUIT)); } Datos.OrdenesCompraDAL dalOrdenesCompra = dal.ObtenerOrdenesCompraDAL(); List <Datos.ItemOrdenPago> itemsOrdenesPagoDAL = new List <Datos.ItemOrdenPago>(); foreach (ItemOrdenPago itemOrdenPago in ordenPago.Items) { Datos.ItemOrdenCompra itemOrdenCompraDAL = dalOrdenesCompra.ObtenerItem(itemOrdenPago.ItemOrdenCompra.Id); if (itemOrdenCompraDAL == null) { throw new OBMCateringException(Resources.OrdenesPagoBL_Validaciones_ItemOrdenCompraInvalido); } Datos.ItemOrdenPago itemOrdenPagoDAL = new Datos.ItemOrdenPago { ItemOrdenCompra = itemOrdenCompraDAL, Precio = itemOrdenPago.Precio }; itemsOrdenesPagoDAL.Add(itemOrdenPagoDAL); } Datos.OrdenPago ordenPagoDAL = new Datos.OrdenPago { Fecha = ordenPago.Fecha, Pagada = ordenPago.Pagada, Proveedor = proveedorDAL, ItemsOrdenesPago = itemsOrdenesPagoDAL }; Datos.OrdenesPagoDAL dalOrdenesPago = dal.ObtenerOrdenesPagoDAL(); dalOrdenesPago.Crear(ordenPagoDAL); dal.Guardar(); }
/// <summary> /// Crea una nueva receta dentro del sistema /// </summary> /// <param name="receta">Receta a crear</param> public void Crear(Receta receta) { ValidarReceta(receta); Datos.RecetasDAL dalRecetas = dal.ObtenerRecetasDAL(); Datos.EstadoReceta estadoDAL = dalRecetas.ObtenerEstado(EstadoReceta.SinIngredientes.ToString()); Datos.Receta recetaDAL = new Datos.Receta { Nombre = receta.Nombre, Detalle = receta.Detalle, Estado = estadoDAL }; dalRecetas.Crear(recetaDAL); dal.Guardar(); }
/// <summary> /// Crea una nueva orden de venta o pedido en el sistema /// Las ordenes de venta son la informacion central del sistema ya que a partir de ellas se mueve el negocio, /// se preparan recetas, se generan ordenes de compra, facturas, ordenes de pago, etc. /// </summary> /// <param name="ordenVenta">Orden de venta a crear</param> public void Crear(OrdenVenta ordenVenta) { ValidarOrdenVenta(ordenVenta); Datos.ClientesDAL dalClientes = dal.ObtenerClientesDAL(); Datos.Cliente clienteDAL = dalClientes.Obtener(ordenVenta.Cliente.CUIT); if (clienteDAL == null) { throw new OBMCateringException(string.Format(Resources.BL_Validaciones_ClienteInvalido, ordenVenta.Cliente.CUIT)); } Datos.RecetasDAL dalRecetas = dal.ObtenerRecetasDAL(); List <Datos.Receta> recetasDAL = new List <Datos.Receta>(); foreach (Receta receta in ordenVenta.Recetas) { Datos.Receta recetaDAL = dalRecetas.Obtener(receta.Id); if (recetaDAL == null) { throw new OBMCateringException(string.Format(Resources.OrdenesVentaBL_Validaciones_RecetaInvalida, receta.Nombre)); } recetasDAL.Add(recetaDAL); } Datos.OrdenVenta ordenVentaDAL = new Datos.OrdenVenta { FechaInicio = ordenVenta.FechaInicio, FechaFin = ordenVenta.FechaFin, Comensales = ordenVenta.Comensales, Precio = ordenVenta.Precio, Aprobada = ordenVenta.Aprobada, Cliente = clienteDAL, Recetas = recetasDAL }; Datos.OrdenesVentaDAL dalOrdenesVenta = dal.ObtenerOrdenesVentaDAL(); dalOrdenesVenta.Crear(ordenVentaDAL); dal.Guardar(); }
/// <summary> /// Crea entradas en el listado de precios para los ingredientes que aun no figuren en el mismo, /// es decir para nuevos ingredientes de una receta. /// Las entradas se crearan con el precio como faltante, ya que solo los usuarios autorizados podran asignar precios a los ingredientes /// </summary> /// <param name="receta">Receta para analizar sus ingredientes y crear precios faltantes si es necesario</param> public void CrearFaltantes(Receta receta) { if (receta == null) { throw new OBMCateringException(Resources.BL_Validaciones_RecetaNull); } Datos.IngredientesDAL dalIngredientes = dal.ObtenerIngredientesDAL(); Datos.PreciosIngredientesDAL dalPreciosIngredientes = dal.ObtenerPreciosIngredientesDAL(); foreach (IngredienteReceta ingredienteReceta in receta.Ingredientes) { Datos.Ingrediente ingredienteDAL = dalIngredientes.Obtener(ingredienteReceta.Ingrediente.Nombre); Datos.PrecioIngrediente precioIngredienteDAL = dalPreciosIngredientes.Obtener(ingredienteDAL); if (precioIngredienteDAL == null) { Datos.RecetasDAL dalRecetas = dal.ObtenerRecetasDAL(); Datos.UnidadMedida unidadMedidaDAL = dalRecetas.ObtenerUnidad(ingredienteReceta.Unidad.ToString()); if (unidadMedidaDAL == null) { throw new OBMCateringException(string.Format(Resources.BL_Validaciones_UnidadMedidaInvalida, ingredienteReceta.Unidad)); } precioIngredienteDAL = new Datos.PrecioIngrediente { Ingrediente = ingredienteDAL, Unidad = unidadMedidaDAL }; dalPreciosIngredientes.Crear(precioIngredienteDAL); } } dal.Guardar(); }
/// <summary> /// Crea un nuevo cliente en el sistema /// </summary> /// <param name="cliente">Cliente a crear</param> public void Crear(Cliente cliente) { ValidarCliente(cliente); Datos.LocalidadesDAL dalLocalidades = dal.ObtenerLocalidadesDAL(); Datos.Localidad localidadDAL = dalLocalidades.Obtener(cliente.Localidad.Id); if (localidadDAL == null) { throw new OBMCateringException(string.Format(Resources.BL_Validaciones_LocalidadInvalida, cliente.Localidad.Nombre)); } Datos.ClientesDAL dalClientes = dal.ObtenerClientesDAL(); Datos.TipoCliente tipoClienteDAL = dalClientes.ObtenerTipo(cliente.Tipo.ToString()); if (tipoClienteDAL == null) { throw new OBMCateringException(string.Format(Resources.ClientesBL_Validaciones_TipoInvalido, cliente.Tipo)); } Datos.Cliente clienteDAL = new Datos.Cliente { CUIT = cliente.CUIT, Nombre = cliente.Nombre, Domicilio = cliente.Domicilio, Localidad = localidadDAL, CodigoPostal = cliente.CodigoPostal, Telefono = cliente.Telefono, Email = cliente.Email, Tipo = tipoClienteDAL, FechaAlta = cliente.FechaAlta, Activo = cliente.Activo }; dalClientes.Crear(clienteDAL); dal.Guardar(); }
/// <summary> /// Crea una nueva factura en el sistema, lo que implica que una determinada orden de venta ha sido aprobada /// Por cada orden de venta o pedido debera crearse una factura que la respalde /// </summary> /// <param name="factura">Factura a crear</param> public void Crear(Factura factura) { ValidarFactura(factura); Datos.OrdenesVentaDAL dalOrdenesVenta = dal.ObtenerOrdenesVentaDAL(); Datos.OrdenVenta ordenVentaDAL = dalOrdenesVenta.Obtener(factura.OrdenVenta.Id); if (ordenVentaDAL == null) { throw new OBMCateringException(Resources.BL_Validaciones_OrdenVentaInvalida); } Datos.Factura facturaDAL = new Datos.Factura { Fecha = factura.Fecha, Cobrada = factura.Cobrada, OrdenVenta = ordenVentaDAL }; Datos.FacturasDAL dalFacturas = dal.ObtenerFacturasDAL(); dalFacturas.Crear(facturaDAL); dal.Guardar(); }
/// <summary> /// Registra un nuevo evento en el sistema /// </summary> /// <param name="mensaje">Mensaje del evento</param> /// <param name="tipo">Tipo de evento</param> public void Registrar(string mensaje, TipoMensajeBitacora tipo) { if (string.IsNullOrEmpty(mensaje)) { throw new OBMCateringException(Resources.BitacoraBL_Validaciones_MensajeNull); } Datos.BitacoraDAL dalBitacoras = dal.ObtenerBitacoraDAL(); Datos.TipoMensajeBitacora tipoMensajeDAL = dalBitacoras.ObtenerTipo(tipo.ToString()); if (tipoMensajeDAL == null) { throw new OBMCateringException(string.Format(Resources.BitacoraBL_Validaciones_TipoInvalido, tipo)); } Usuario usuarioAutenticado = contexto.ObtenerUsuarioAutenticado(); Datos.Usuario usuarioDAL = null; if (usuarioAutenticado != null) { Datos.UsuariosDAL dalUsuarios = dal.ObtenerUsuariosDAL(); usuarioDAL = dalUsuarios.Obtener(usuarioAutenticado.Nick); } Datos.Bitacora bitacoraDAL = new Datos.Bitacora { Fecha = DateTime.Now, Mensaje = mensaje, Tipo = tipoMensajeDAL, Usuario = usuarioDAL }; dalBitacoras.Crear(bitacoraDAL); dal.Guardar(); }
/// <summary> /// Crea una nueva orden de compra en el sistema, lo que implica que una determinada orden de venta ha sido aprobada /// Por cada orden de venta o pedido debera crearse una orden de compra que la respalde /// </summary> /// <param name="ordenVenta">Orden de venta necesaria para poder crear la orden de compra</param> public void Crear(OrdenVenta ordenVenta) { if (ordenVenta == null) { throw new OBMCateringException(Resources.BL_Validaciones_OrdenVentaNull); } if (ordenVenta.Comensales <= 0) { throw new OBMCateringException(Resources.BL_Validaciones_OrdenVentaSinComensales); } Datos.OrdenCompra ordenCompraDAL = new Datos.OrdenCompra(); Dictionary <string, Datos.ItemOrdenCompra> itemsDALPorIngrediente = new Dictionary <string, Datos.ItemOrdenCompra>(); foreach (Receta receta in ordenVenta.Recetas) { foreach (IngredienteReceta ingredienteReceta in receta.Ingredientes) { Datos.ItemOrdenCompra itemOrdenCompraDAL; Ingrediente ingrediente = ingredienteReceta.Ingrediente; if (ingredienteReceta.Cantidad <= 0) { throw new OBMCateringException(string.Format(Resources.OrdenesCompraBL_Validaciones_RecetaSinIngredientes, ingrediente.Nombre, receta.Nombre)); } decimal cantidad = ingredienteReceta.Cantidad * ordenVenta.Comensales; if (itemsDALPorIngrediente.ContainsKey(ingrediente.Nombre)) { itemOrdenCompraDAL = itemsDALPorIngrediente[ingrediente.Nombre]; itemOrdenCompraDAL.Cantidad = itemOrdenCompraDAL.Cantidad + cantidad; } else { itemOrdenCompraDAL = new Datos.ItemOrdenCompra(); Datos.IngredientesDAL dalIngredientes = dal.ObtenerIngredientesDAL(); Datos.Ingrediente ingredienteDAL = dalIngredientes.Obtener(ingrediente.Nombre); if (ingredienteDAL == null) { throw new OBMCateringException(string.Format(Resources.OrdenesCompraBL_Validaciones_IngredienteInvalido, ingrediente.Nombre, receta.Nombre)); } Datos.RecetasDAL dalRecetas = dal.ObtenerRecetasDAL(); Datos.UnidadMedida unidadDAL = dalRecetas.ObtenerUnidad(ingredienteReceta.Unidad.ToString()); if (unidadDAL == null) { throw new OBMCateringException(string.Format(Resources.BL_Validaciones_UnidadMedidaInvalida, ingredienteReceta.Unidad)); } itemOrdenCompraDAL.Ingrediente = ingredienteDAL; itemOrdenCompraDAL.Cantidad = cantidad; itemOrdenCompraDAL.Unidad = unidadDAL; } itemsDALPorIngrediente[ingrediente.Nombre] = itemOrdenCompraDAL; } } Datos.OrdenesVentaDAL dalOrdenesVenta = dal.ObtenerOrdenesVentaDAL(); Datos.OrdenVenta ordenVentaDAL = dalOrdenesVenta.Obtener(ordenVenta.Id); if (ordenVentaDAL == null) { throw new OBMCateringException(Resources.BL_Validaciones_OrdenVentaInvalida); } Datos.OrdenesCompraDAL dalOrdenesCompra = dal.ObtenerOrdenesCompraDAL(); Datos.EstadoOrdenCompra estadoDAL = dalOrdenesCompra.ObtenerEstado(EstadoOrdenCompra.Generada.ToString()); ordenCompraDAL.Fecha = DateTime.Now; ordenCompraDAL.Estado = estadoDAL; ordenCompraDAL.OrdenVenta = ordenVentaDAL; foreach (Datos.ItemOrdenCompra itemOrdenCompra in itemsDALPorIngrediente.Values) { ordenCompraDAL.ItemsOrdenesCompra.Add(itemOrdenCompra); } dalOrdenesCompra.Crear(ordenCompraDAL); dal.Guardar(); }