| | | 1 | | using System; |
| | | 2 | | using System.Collections.Generic; |
| | | 3 | | using System.Text; |
| | | 4 | | using System.Linq; |
| | | 5 | | using Microsoft.EntityFrameworkCore; |
| | | 6 | | using WinSolutions.Sveta.Server.Data.DataModel.Extensions; |
| | | 7 | | using WinSolutions.Sveta.Server.Data.DataModel.Kinds; |
| | | 8 | | using WinSolutions.Sveta.Server.Data.DataModel.Entities; |
| | | 9 | | |
| | | 10 | | namespace WinSolutions.Sveta.Server.Data.DataModel.Contexts |
| | | 11 | | { |
| | | 12 | | public class DataSeeder |
| | | 13 | | { |
| | | 14 | | public static void Seed(SvetaDbContext context) |
| | 0 | 15 | | { |
| | 0 | 16 | | var contragent = context.Contragents.FirstOrDefault(x => x.Id == -2); |
| | 0 | 17 | | var user = context.Users.Include(x => x.Contragent).FirstOrDefault(x => x.Id == -1 && x.Contragent == null); |
| | 0 | 18 | | if (user != null) |
| | 0 | 19 | | { |
| | 0 | 20 | | user.Contragent = contragent; |
| | 0 | 21 | | } |
| | 0 | 22 | | user = context.Users.Include(x => x.Contragent).FirstOrDefault(x => x.Id == -2 && x.Contragent == null); |
| | 0 | 23 | | if (user != null) |
| | 0 | 24 | | { |
| | 0 | 25 | | user.Contragent = contragent; |
| | 0 | 26 | | } |
| | 0 | 27 | | context.SaveChanges(); |
| | | 28 | | |
| | | 29 | | // TODO после релиза убрать |
| | 0 | 30 | | var priceTrendDetails = context.PriceTrendDetails.Where(x => !x.Discount.HasValue).ToList(); |
| | 0 | 31 | | if(priceTrendDetails.Any()) |
| | 0 | 32 | | { |
| | 0 | 33 | | priceTrendDetails.ForEach(x => x.Discount = x.Discount()); |
| | 0 | 34 | | context.SaveChanges(); |
| | 0 | 35 | | } |
| | | 36 | | |
| | 0 | 37 | | var goods = context.Goods.Where(x => string.IsNullOrEmpty(x.UniqueCode)).ToList(); |
| | 0 | 38 | | if(goods.Any()) |
| | 0 | 39 | | { |
| | 0 | 40 | | goods.ForEach(x => x.UpdateUniqueCode()); |
| | 0 | 41 | | context.SaveChanges(); |
| | 0 | 42 | | } |
| | | 43 | | |
| | | 44 | | //Заполнение расписания для уже имеющихся складов |
| | 0 | 45 | | var schedules = context.WorkScheduler.Where(x => !x.IsDeleted && x.BeginTime.Date >= DateTime.UtcNow.Date).T |
| | 0 | 46 | | var modelSchedules = schedules.Where(x => x.WarehouseId == -2); //эталонное расписание сервисного департамен |
| | 0 | 47 | | var warehouses = context.Departments.Where(x => x.Kind.Id == (long)DepartmentKind.Warehouse && !x.IsDeleted |
| | 0 | 48 | | warehouses.ForEach(x => |
| | 0 | 49 | | { |
| | 0 | 50 | | var newSchedules = new List<WorkSchedule>(); |
| | 0 | 51 | | if (!schedules.Any(z=>z.Warehouse == x)) |
| | 0 | 52 | | { |
| | 0 | 53 | | newSchedules.AddRange(modelSchedules.Select(p => new WorkSchedule() { Warehouse = x, BeginTime = p.B |
| | 0 | 54 | | context.WorkScheduler.AddRange(newSchedules); |
| | 0 | 55 | | context.SaveChanges(); |
| | 0 | 56 | | } |
| | 0 | 57 | | }); |
| | | 58 | | |
| | | 59 | | // Заполнение регламент статусов для уже имеющихся складов |
| | 0 | 60 | | var routes = context.MovementStatusRoutes.Where(x => !x.IsDeleted).ToList(); |
| | 0 | 61 | | var modelRoutes = routes.Where(x => x.WarehouseId == -2); // эталонный регламент сервисного департамента |
| | 0 | 62 | | warehouses.ForEach(x => |
| | 0 | 63 | | { |
| | 0 | 64 | | if (routes.All(z => z.WarehouseId != x.Id)) |
| | 0 | 65 | | { |
| | 0 | 66 | | var newRoutes = new List<MovementStatusRoute>(); |
| | 0 | 67 | | newRoutes.AddRange(modelRoutes.Select(p => new MovementStatusRoute |
| | 0 | 68 | | { |
| | 0 | 69 | | StatusCurrentId = p.StatusCurrentId, |
| | 0 | 70 | | StatusNextId = p.StatusNextId, |
| | 0 | 71 | | RouteKey = p.RouteKey, |
| | 0 | 72 | | Hour = p.Hour, |
| | 0 | 73 | | Warehouse = x |
| | 0 | 74 | | })); |
| | 0 | 75 | | context.MovementStatusRoutes.AddRange(newRoutes); |
| | 0 | 76 | | context.SaveChanges(); |
| | 0 | 77 | | } |
| | 0 | 78 | | }); |
| | | 79 | | |
| | 0 | 80 | | NormalizePhotoFileNames(context); |
| | 0 | 81 | | } |
| | | 82 | | |
| | | 83 | | /// <summary> |
| | | 84 | | /// удаление слэшей в именах картинок товаров |
| | | 85 | | /// </summary> |
| | | 86 | | static void NormalizePhotoFileNames(SvetaDbContext context) |
| | 0 | 87 | | { |
| | 0 | 88 | | var photos = context.Photos.Where(x => x.PreviewUrl.Contains("/") || x.FullSizeUrl.Contains("/")).ToList(); |
| | 0 | 89 | | photos.ForEach(x => |
| | 0 | 90 | | { |
| | 0 | 91 | | x.PreviewUrl = x.PreviewUrl.Replace("/", ""); |
| | 0 | 92 | | x.FullSizeUrl = x.FullSizeUrl.Replace("/", ""); |
| | 0 | 93 | | }); |
| | 0 | 94 | | context.SaveChanges(); |
| | 0 | 95 | | } |
| | | 96 | | } |
| | | 97 | | } |