153 lines
7.9 KiB
C#
153 lines
7.9 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using AutoMapper;
|
|
using OD.WebApplication.Models;
|
|
|
|
namespace OD.WebApplication.Profiles
|
|
{
|
|
public class OriginToDestinationProfile : Profile
|
|
{
|
|
private readonly List<string> BusinessApplicationCategories = new List<string>
|
|
{
|
|
"Metrónomos, afinadores, atriles, accesorios y complementos en general",
|
|
"Contrabajo y arcos",
|
|
"Cuerdas de violín, viola, violonchelo y contrabajo",
|
|
"Pastillas, afinadores, puentes, cordales, soportes y accesorios de cuerda",
|
|
"Viola y arcos de viola",
|
|
"Violín y arcos de violín",
|
|
"Violonchelo y arcos",
|
|
"Amplificadores, cabezales y bafles de guitarra y bajo",
|
|
"Bajos eléctricos y acústicos",
|
|
"Bandurrias",
|
|
"Cuerdas de instrumentos de cuerda punteada",
|
|
"Estuches, fundas y soportes para instrumentos de cuerda punteada",
|
|
"Guitarras acústicas amplificadas",
|
|
"Guitarras acústicas no amplificadas",
|
|
"Guitarras eléctricas",
|
|
"Guitarras españolas amplificadas",
|
|
"Guitarras españolas no amplificadas",
|
|
"Laúdes",
|
|
"Procesadores de guitarra, pedales, pedaleras, pastillas, mocrófonos de guitara y afinadores",
|
|
"Púas, puentes, cejuelas, tornillos, cordales, clavijas y accesorios en general de guitarra e instrumentos de cuerda p",
|
|
"Timples, ukeleles y otros instrumentos de cuerda punteada",
|
|
"Lámaras, focos, procesadores y mesas iluminación",
|
|
"Líquido y máquinas de humo",
|
|
"Software secuenciador, editor, procesador y grabador de sonido y sus complementos, aso como programas en general",
|
|
"Torres, bolas y complementos de iluminación",
|
|
"Armónicas, acordeones e instrumentos de lengüeta y sus complementos",
|
|
"Baterías acústicas y digitales",
|
|
"Cajones rumberos, claves, sonajas y otros instrumentos no incluidos en otra familia",
|
|
"Marimbas, xilófonos, metalófonos e instrumentos con escala afinada",
|
|
"Platos",
|
|
"Soportes, racks, fundas, banquetas, parches, membranas, baquetas y accesorios de percusión en general",
|
|
"Timbales, bombos, tambores, cajas panderetas y otros instrumentos de membrana",
|
|
"Estuches, fundas, banquetas y accesorios de piano",
|
|
"Pianos de Cola Nuevos con o sin módulo",
|
|
"Pianos de Cola Usados",
|
|
"Pianos Digitales con ritmos",
|
|
"Pianos Digitales sin ritmos",
|
|
"Pianos Verticales Nuevos con o sin módulo",
|
|
"Pianos Verticales Usados con o sin módulo",
|
|
"Libretas, block y papel pautado",
|
|
"Libros y partituras de canto",
|
|
"Libros y partituras de clarinete",
|
|
"Libros y partituras de contrabajo",
|
|
"Libros y partituras de fagot",
|
|
"Libros y partituras de flauta, dulzaina y gaita",
|
|
"Libros y partituras de guitarra y cuerda punteada",
|
|
"Libros y partituras de música de cámara",
|
|
"Libros y partituras de oboe",
|
|
"Libros y partituras de orquesta",
|
|
"Libros y partituras de percusión",
|
|
"Libros y partituras de piano",
|
|
"Libros y partituras de saxo",
|
|
"Libros y partituras de solfeo, armonía, Historia de la Música y textos en general",
|
|
"Libros y partituras de teclado y acordeón",
|
|
"Libros y partituras de trombón, tuba y bombardino",
|
|
"Libros y partituras de trompa",
|
|
"Libros y partituras de trompeta",
|
|
"Libros y partituras de viola",
|
|
"Libros y partituras de violín",
|
|
"Libros y partituras de violonchelo",
|
|
"Alquiler de piano, teclados y otros aparatos",
|
|
"Servicios de afinación, reparación y transporte de pianos",
|
|
"Servicios de reparación de bafles, etapas y sistemas de amplificación y procesado de sonido",
|
|
"Servicios de reparación de teclados e instrumentos digitales",
|
|
"Servicios de reparación y ajuste de guitarras",
|
|
"Servicios de reparación y ajuste de instrumentos de cuerda",
|
|
"Servicios de reparación y ajuste de instrumentos de viento",
|
|
"Bafles, altavoces y monitores normales o inalámbricos",
|
|
"Cables y conectores",
|
|
"Etapas de potencia",
|
|
"Grabadores de sonido y sus soportes",
|
|
"Mesas de mezcla, cabezales, equipos integrados, amplificadores (combos) multiuso y mezcladores",
|
|
"Micrófonos normales e inalámbricos",
|
|
"Procesadores de efectos, pachbay, puertas de ruido, divisores, ecualizadores y otros sistemas de procesado de sonido",
|
|
"Soportes de micro, columna y torres, racks, auriculares y accesorios en general de amplificación",
|
|
"Accesorios de informática en general",
|
|
"CD y DVD",
|
|
"Librerías de sonidos y midifiles",
|
|
"OTRO",
|
|
"Tarjetas de sonido e interfaces de ordenador con o sin software",
|
|
"Alimentadores, fundas, estuches, pedales, soportes y accesorios de teclado y módulos",
|
|
"Cajas de ritmos y módulos de DJ",
|
|
"Módulos arregladores con ritmos y secuenciadores",
|
|
"Módulos de sonido, sintetizadores y samplers",
|
|
"Módulos digitales de percusión",
|
|
"Órganos y teclados litúrgicos",
|
|
"Teclados con ritmos",
|
|
"Teclados Sintetizadores, Workstation y samplers",
|
|
"Teclados y mesas controladores",
|
|
"Cañas, boquillas, abrazaderas, estuches, fundas, soportes, atriles, accesorios y complementos de viento",
|
|
"Clarinete",
|
|
"Flauta travesera y de pico",
|
|
"Oboe, fliscorno, bombardino, fagot, helicón, tuba y otros instrumentos de viento",
|
|
"Saxo",
|
|
"Trombón",
|
|
"Trompa",
|
|
"Trompetas y cornetas"
|
|
};
|
|
|
|
|
|
public OriginToDestinationProfile()
|
|
{
|
|
CreateMap<OriginDataModel, DestinationDataModel>()
|
|
.ForMember(dest => dest.Category, opt => opt.MapFrom(src=> ResolveCategory(src)))
|
|
.ForMember(dest => dest.Brand, opt => opt.MapFrom(src => src.Manufacturer))
|
|
.ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name))
|
|
.ForMember(dest => dest.AlternateCode, opt => opt.MapFrom(src => ResolveAlternateCode(src)))
|
|
.ForMember(dest => dest.StorePriceWithVAT, opt => opt.MapFrom(src => ResolveAddVAT(src.PriceListingWithoutVAT)))
|
|
.ForMember(dest => dest.OnlinePriceWithVAT, opt => opt.MapFrom(src => ResolveAddVAT(src.PricePublicWithoutVAT)))
|
|
.ForMember(dest => dest.OnlineValueWihtVAT, opt => opt.MapFrom(src => ResolveAddVAT(src.PriceRecommendedWithoutVAT)));
|
|
}
|
|
|
|
private string ResolveCategory(OriginDataModel src)
|
|
{
|
|
var categories = src.Categories.Split(',').ToList();
|
|
categories = categories.Select(del => del.Trim()).Reverse().ToList();
|
|
foreach (var category in categories)
|
|
{
|
|
if (BusinessApplicationCategories.Any(x =>
|
|
x.ToLower().Contains(category.ToLower()) || category.ToLower().Contains(x.ToLower())))
|
|
{
|
|
return BusinessApplicationCategories.First(x =>
|
|
x.ToLower().Contains(category.ToLower()) || category.ToLower().Contains(x.ToLower()));
|
|
}
|
|
}
|
|
|
|
return "OTRO";
|
|
}
|
|
|
|
private static string ResolveAlternateCode(OriginDataModel src)
|
|
{
|
|
return src.ShortDesc.ToUpper().Replace(" ", "");
|
|
}
|
|
|
|
private static int ResolveAddVAT(decimal input)
|
|
{
|
|
const decimal vat = 0.21m;
|
|
var result = decimal.Round(input * vat + input);
|
|
return decimal.ToInt32(result);
|
|
}
|
|
}
|
|
} |