< Summary

Class:WinSolutions.Sveta.Server.Data.DataModel.Contexts.DataSeeder
Assembly:WinSolutions.Sveta.Server
File(s):/opt/dev/sveta_api_build/WinSolutions.Sveta.Server/Data/DataModel/Contexts/DataSeeder.cs
Covered lines:0
Uncovered lines:68
Coverable lines:68
Total lines:97
Line coverage:0% (0 of 68)
Covered branches:0
Total branches:22
Branch coverage:0% (0 of 22)

Metrics

MethodLine coverage Branch coverage
Seed(...)0%0%
NormalizePhotoFileNames(...)0%0%

File(s)

/opt/dev/sveta_api_build/WinSolutions.Sveta.Server/Data/DataModel/Contexts/DataSeeder.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Text;
 4using System.Linq;
 5using Microsoft.EntityFrameworkCore;
 6using WinSolutions.Sveta.Server.Data.DataModel.Extensions;
 7using WinSolutions.Sveta.Server.Data.DataModel.Kinds;
 8using WinSolutions.Sveta.Server.Data.DataModel.Entities;
 9
 10namespace WinSolutions.Sveta.Server.Data.DataModel.Contexts
 11{
 12    public class DataSeeder
 13    {
 14        public static void Seed(SvetaDbContext context)
 015        {
 016            var contragent = context.Contragents.FirstOrDefault(x => x.Id == -2);
 017            var user = context.Users.Include(x => x.Contragent).FirstOrDefault(x => x.Id == -1 && x.Contragent == null);
 018            if (user != null)
 019            {
 020                user.Contragent = contragent;
 021            }
 022            user = context.Users.Include(x => x.Contragent).FirstOrDefault(x => x.Id == -2 && x.Contragent == null);
 023            if (user != null)
 024            {
 025                user.Contragent = contragent;
 026            }
 027            context.SaveChanges();
 28
 29            // TODO после релиза убрать
 030            var priceTrendDetails = context.PriceTrendDetails.Where(x => !x.Discount.HasValue).ToList();
 031            if(priceTrendDetails.Any())
 032            {
 033                priceTrendDetails.ForEach(x => x.Discount = x.Discount());
 034                context.SaveChanges();
 035            }
 36
 037            var goods = context.Goods.Where(x => string.IsNullOrEmpty(x.UniqueCode)).ToList();
 038            if(goods.Any())
 039            {
 040                goods.ForEach(x => x.UpdateUniqueCode());
 041                context.SaveChanges();
 042            }
 43
 44            //Заполнение расписания для уже имеющихся складов
 045            var schedules = context.WorkScheduler.Where(x => !x.IsDeleted && x.BeginTime.Date >= DateTime.UtcNow.Date).T
 046            var modelSchedules = schedules.Where(x => x.WarehouseId == -2); //эталонное расписание сервисного департамен
 047            var warehouses = context.Departments.Where(x => x.Kind.Id == (long)DepartmentKind.Warehouse && !x.IsDeleted 
 048            warehouses.ForEach(x =>
 049            {
 050                var newSchedules = new List<WorkSchedule>();
 051                if (!schedules.Any(z=>z.Warehouse == x))
 052                {
 053                    newSchedules.AddRange(modelSchedules.Select(p => new WorkSchedule() { Warehouse = x, BeginTime = p.B
 054                    context.WorkScheduler.AddRange(newSchedules);
 055                    context.SaveChanges();
 056                }
 057            });
 58
 59            // Заполнение регламент статусов для уже имеющихся складов
 060            var routes = context.MovementStatusRoutes.Where(x => !x.IsDeleted).ToList();
 061            var modelRoutes = routes.Where(x => x.WarehouseId == -2); // эталонный регламент сервисного департамента
 062            warehouses.ForEach(x =>
 063            {
 064                if (routes.All(z => z.WarehouseId != x.Id))
 065                {
 066                    var newRoutes = new List<MovementStatusRoute>();
 067                    newRoutes.AddRange(modelRoutes.Select(p => new MovementStatusRoute
 068                    {
 069                        StatusCurrentId = p.StatusCurrentId,
 070                        StatusNextId = p.StatusNextId,
 071                        RouteKey = p.RouteKey,
 072                        Hour = p.Hour,
 073                        Warehouse = x
 074                    }));
 075                    context.MovementStatusRoutes.AddRange(newRoutes);
 076                    context.SaveChanges();
 077                }
 078            });
 79
 080            NormalizePhotoFileNames(context);
 081        }
 82
 83        /// <summary>
 84        /// удаление слэшей в именах картинок товаров
 85        /// </summary>
 86        static void NormalizePhotoFileNames(SvetaDbContext context)
 087        {
 088            var photos = context.Photos.Where(x => x.PreviewUrl.Contains("/") || x.FullSizeUrl.Contains("/")).ToList();
 089            photos.ForEach(x =>
 090            {
 091                x.PreviewUrl = x.PreviewUrl.Replace("/", "");
 092                x.FullSizeUrl = x.FullSizeUrl.Replace("/", "");
 093            });
 094            context.SaveChanges();
 095        }
 96    }
 97}