/// <summary> /// </summary> public UsuarioDTO Login(UsuarioDTO usuario) { if (string.IsNullOrEmpty(usuario.Email) || string.IsNullOrEmpty(usuario.Password)) { Exception excepcion = new Exception("Usuario o contraseña inválidos."); excepcion.TryAddInfo(ParameterTypes.Title, "Error al iniciar sesión."); throw excepcion; } if (string.IsNullOrWhiteSpace(usuario.Email) || string.IsNullOrWhiteSpace(usuario.Password)) { Exception excepcion = new Exception("Usuario o contraseña inválidos."); excepcion.TryAddInfo(ParameterTypes.Title, "Error al iniciar sesión."); throw excepcion; } if (!new EmailAddressAttribute().IsValid(usuario.Email)) { Exception excepcion = new Exception("El usuario no es un correo electrónico válido."); excepcion.TryAddInfo(ParameterTypes.Title, "Error al iniciar sesión."); throw excepcion; } DB_MAPRI_Entities context = null; UsuarioDTO usuarioEncontrado = null; T_Usrs usuarioResult = null; try { context = new DB_MAPRI_Entities(); usuarioResult = context.T_Usrs.AsParallel().FirstOrDefault( e => e.Email == usuario.Email.ToLower() && e.Password == usuario.Password && e.DeleteDate == null); if (usuarioResult == null) { Exception excepcion = new Exception("No existe un usuario registrado con esos datos."); excepcion.TryAddInfo(ParameterTypes.Title, "Error al iniciar sesión."); throw excepcion; } usuarioEncontrado = UsuarioDTO.EntityToDTO(usuarioResult); } catch (Exception exception) { throw exception; } finally { context?.Dispose(); } return(usuarioEncontrado); }
public List <HistoricoKilometrajeDTO> ImportarDatosInterface(UploadedFileDTO file, string usuario) { List <HistoricoKilometrajeDTO> listaResultado = new List <HistoricoKilometrajeDTO>(); List <T_Ihmn> datosAgregar = new List <T_Ihmn>(); DB_MAPRI_Entities context = null; int columnasDetectadas = 0; int filaInicio = 0; DateTime?fechaCreacionArchivo = null; bool esFilaFecha = false; try { XLWorkbook archivoXLSX = GetWoorkbook(file.Data); IXLRows nonEmptyDataRows = archivoXLSX.Worksheet("Report").RowsUsed(); foreach (IXLRow dataRow in nonEmptyDataRows) { if (columnasDetectadas == listaColumnasGuardar.Count) { break; } IXLCells cellsUsed = dataRow.CellsUsed(); foreach (IXLCell cellItem in cellsUsed) { if (columnasDetectadas == listaColumnasGuardar.Count) { break; } string valorCelda = cellItem.GetValue <string>().Trim(); if (valorCelda == "Created") { esFilaFecha = true; continue; } if (esFilaFecha && fechaCreacionArchivo == null) { double baseDate = cellItem.GetValue <double>(); fechaCreacionArchivo = DateTime.FromOADate(baseDate); } int rowNumber = cellItem.Address.RowNumber; int columnNumber = cellItem.Address.ColumnNumber; string value = cellItem.Value.ToString().Trim(); if (listaColumnasGuardar.ContainsKey(value)) { if (listaColumnasGuardar[value] == 0) { listaColumnasGuardar[value] = columnNumber; if (filaInicio == 0) { filaInicio = rowNumber + 1; } columnasDetectadas++; } } } } var dataRows = archivoXLSX.Worksheet("Report").RowsUsed().Where(r => r.RowNumber() >= filaInicio); Parallel.ForEach(dataRows, new ParallelOptions { MaxDegreeOfParallelism = 10 }, e => AgregarHistoricoKilometrajeDTO(e, fechaCreacionArchivo, ref listaResultado)); datosAgregar.AddRange( listaResultado.AsParallel().Select( e => new T_Ihmn() { VIN = e.VIN, Fecha = e.Fecha, Kilometros = e.Kilometros, Horas = e.Horas, Minutos = e.Minutos, CreationUser = usuario, Accion = "Alta", CreationDate = DateTime.Now }) ); context = new DB_MAPRI_Entities(); context.T_Ihmn.AddRange(datosAgregar); int saved = context.SaveChanges(); listaResultado.Clear(); listaResultado.AddRange( datosAgregar.AsParallel().Select( e => new HistoricoKilometrajeDTO() { Id = e.Id, VIN = e.VIN, Fecha = e.Fecha, Kilometros = e.Kilometros, Horas = e.Horas, Minutos = e.Minutos }) ); } catch (Exception ex) { throw ex; } finally { context?.Dispose(); } return(listaResultado); }