forked from ddrilling/AsbCloudServer
Enable nullable on DetectedOperation DrillingProgramPart FileCategory FileInfo FileMark
This commit is contained in:
parent
61bee21ad9
commit
2b0e36d68c
@ -1,8 +1,10 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.DetectedOperation
|
namespace AsbCloudApp.Data.DetectedOperation
|
||||||
{
|
{
|
||||||
|
|
||||||
|
#nullable enable
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Автоматически определяемая операция
|
/// Автоматически определяемая операция
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -11,12 +13,12 @@ namespace AsbCloudApp.Data.DetectedOperation
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Список всех операций
|
/// Список всех операций
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public IEnumerable<DetectedOperationDto> Operations { get; set; }
|
public IEnumerable<DetectedOperationDto> Operations { get; set; } = Enumerable.Empty<DetectedOperationDto>();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Статистика по бурильщикам
|
/// Статистика по бурильщикам
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public IEnumerable<DetectedOperationDrillersStatDto> Stats { get; set; }
|
public IEnumerable<DetectedOperationDrillersStatDto> Stats { get; set; } = Enumerable.Empty<DetectedOperationDrillersStatDto>();
|
||||||
}
|
}
|
||||||
#nullable disable
|
#nullable disable
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data
|
||||||
{
|
{
|
||||||
|
#nullable enable
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Часть программы бурения
|
/// Часть программы бурения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -10,7 +12,7 @@ namespace AsbCloudApp.Data
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Название
|
/// Название
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Name { get; set; }
|
public string Name { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ИД категории файла
|
/// ИД категории файла
|
||||||
@ -27,12 +29,12 @@ namespace AsbCloudApp.Data
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Публикаторы. Могут загружать файл этой категории
|
/// Публикаторы. Могут загружать файл этой категории
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public IEnumerable<UserDto> Publishers { get; set; }
|
public IEnumerable<UserDto> Publishers { get; set; } = Enumerable.Empty<UserDto>();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Согласованты. Могут согласовывать загруженные файлы этой категории
|
/// Согласованты. Могут согласовывать загруженные файлы этой категории
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public IEnumerable<UserDto> Approvers { get; set; }
|
public IEnumerable<UserDto> Approvers { get; set; } = Enumerable.Empty<UserDto>();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Разрешение для текущего пользователя согласовывать документ
|
/// Разрешение для текущего пользователя согласовывать документ
|
||||||
@ -47,6 +49,6 @@ namespace AsbCloudApp.Data
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ссылка на документ.
|
/// Ссылка на документ.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public FileInfoDto File { get; set; }
|
public FileInfoDto? File { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data
|
||||||
{
|
{
|
||||||
|
#nullable enable
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO состояния формирования программы бурения
|
/// DTO состояния формирования программы бурения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -18,12 +20,12 @@ namespace AsbCloudApp.Data
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ошибка при формировании
|
/// Ошибка при формировании
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DrillingProgramCreateError Error { get; set; }
|
public DrillingProgramCreateError? Error { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Файл сформированной программы бурения
|
/// Файл сформированной программы бурения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public FileInfoDto Program { get; set; }
|
public FileInfoDto? Program { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Разрешение редактировать части программы бурения
|
/// Разрешение редактировать части программы бурения
|
||||||
@ -33,7 +35,7 @@ namespace AsbCloudApp.Data
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Список частей программы бурения
|
/// Список частей программы бурения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public IEnumerable<DrillingProgramPartDto> Parts { get; set; }
|
public IEnumerable<DrillingProgramPartDto> Parts { get; set; } = Enumerable.Empty<DrillingProgramPartDto>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -44,11 +46,11 @@ namespace AsbCloudApp.Data
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Текст ошибки для отображения пользователю
|
/// Текст ошибки для отображения пользователю
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Message { get; set; }
|
public string Message { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Текст ошибки для разработчика
|
/// Текст ошибки для разработчика
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Exception { get; set; }
|
public string Exception { get; set; } = string.Empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data
|
||||||
{
|
{
|
||||||
|
#nullable enable
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO информации о файле. Используется для загрузки файла.
|
/// DTO информации о файле. Используется для загрузки файла.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -27,7 +29,7 @@ namespace AsbCloudApp.Data
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// имя файла
|
/// имя файла
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Name { get; set; }
|
public string Name { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// дата загрузки
|
/// дата загрузки
|
||||||
@ -47,11 +49,11 @@ namespace AsbCloudApp.Data
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO автора
|
/// DTO автора
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public UserDto Author { get; set; }
|
public UserDto? Author { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// список отметок файла
|
/// список отметок файла
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public IEnumerable<FileMarkDto> FileMarks { get; set; }
|
public IEnumerable<FileMarkDto> FileMarks { get; set; } = Enumerable.Empty<FileMarkDto>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ using System;
|
|||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data
|
||||||
{
|
{
|
||||||
|
#nullable enable
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Отметка для файла
|
/// Отметка для файла
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -30,17 +31,17 @@ namespace AsbCloudApp.Data
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Полезный комментарий
|
/// Полезный комментарий
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Comment { get; set; }
|
public string? Comment { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// признак удаления отметки
|
/// признак удаления отметки
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsDeleted { get; set; }
|
public bool IsDeleted { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Пользователь создающий отметку.
|
/// Пользователь создающий отметку.
|
||||||
/// Необязательно указывать в запросе на создание.
|
/// Необязательно указывать в запросе на создание.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public UserDto User { get; set; }
|
public UserDto? User { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,5 +1,6 @@
|
|||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data
|
||||||
{
|
{
|
||||||
|
#nullable enable
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Well related DTO
|
/// Well related DTO
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,59 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace AsbCloudDb.Migrations
|
||||||
|
{
|
||||||
|
public partial class Enable_nullable_on_DetectedOperation_DrillingProgramPart_FileCategory_FileInfo_FileMark : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AlterColumn<string>(
|
||||||
|
name: "name",
|
||||||
|
table: "t_file_info",
|
||||||
|
type: "text",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: "",
|
||||||
|
comment: "Название файла",
|
||||||
|
oldClrType: typeof(string),
|
||||||
|
oldType: "text",
|
||||||
|
oldNullable: true,
|
||||||
|
oldComment: "Название файла");
|
||||||
|
|
||||||
|
migrationBuilder.AlterColumn<string>(
|
||||||
|
name: "name",
|
||||||
|
table: "t_file_category",
|
||||||
|
type: "text",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: "",
|
||||||
|
comment: "Название категории",
|
||||||
|
oldClrType: typeof(string),
|
||||||
|
oldType: "text",
|
||||||
|
oldNullable: true,
|
||||||
|
oldComment: "Название категории");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AlterColumn<string>(
|
||||||
|
name: "name",
|
||||||
|
table: "t_file_info",
|
||||||
|
type: "text",
|
||||||
|
nullable: true,
|
||||||
|
comment: "Название файла",
|
||||||
|
oldClrType: typeof(string),
|
||||||
|
oldType: "text",
|
||||||
|
oldComment: "Название файла");
|
||||||
|
|
||||||
|
migrationBuilder.AlterColumn<string>(
|
||||||
|
name: "name",
|
||||||
|
table: "t_file_category",
|
||||||
|
type: "text",
|
||||||
|
nullable: true,
|
||||||
|
comment: "Название категории",
|
||||||
|
oldClrType: typeof(string),
|
||||||
|
oldType: "text",
|
||||||
|
oldComment: "Название категории");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -342,6 +342,7 @@ namespace AsbCloudDb.Migrations
|
|||||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||||
|
|
||||||
b.Property<string>("Name")
|
b.Property<string>("Name")
|
||||||
|
.IsRequired()
|
||||||
.HasColumnType("text")
|
.HasColumnType("text")
|
||||||
.HasColumnName("name")
|
.HasColumnName("name")
|
||||||
.HasComment("Название категории");
|
.HasComment("Название категории");
|
||||||
@ -721,6 +722,7 @@ namespace AsbCloudDb.Migrations
|
|||||||
.HasComment("Удален ли файл");
|
.HasComment("Удален ли файл");
|
||||||
|
|
||||||
b.Property<string>("Name")
|
b.Property<string>("Name")
|
||||||
|
.IsRequired()
|
||||||
.HasColumnType("text")
|
.HasColumnType("text")
|
||||||
.HasColumnName("name")
|
.HasColumnName("name")
|
||||||
.HasComment("Название файла");
|
.HasComment("Название файла");
|
||||||
|
@ -6,7 +6,6 @@ using System.Text.Json.Serialization;
|
|||||||
|
|
||||||
namespace AsbCloudDb.Model
|
namespace AsbCloudDb.Model
|
||||||
{
|
{
|
||||||
#nullable disable
|
|
||||||
[Table("t_detected_operation"), Comment("автоматически определенные операции по телеметрии")]
|
[Table("t_detected_operation"), Comment("автоматически определенные операции по телеметрии")]
|
||||||
public class DetectedOperation
|
public class DetectedOperation
|
||||||
{
|
{
|
||||||
@ -46,11 +45,11 @@ namespace AsbCloudDb.Model
|
|||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
[ForeignKey(nameof(IdTelemetry))]
|
[ForeignKey(nameof(IdTelemetry))]
|
||||||
public virtual Telemetry Telemetry { get; set; }
|
public virtual Telemetry Telemetry { get; set; } = null!;
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
[ForeignKey(nameof(IdCategory))]
|
[ForeignKey(nameof(IdCategory))]
|
||||||
public virtual WellOperationCategory OperationCategory { get; set; }
|
public virtual WellOperationCategory OperationCategory { get; set; } = null!;
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
=> $"{IdCategory}\t{DateStart:G}\t{DateEnd:G}\t{DurationMinutes:#0.#}\t{DepthStart:#0.#}\t{DepthEnd:#0.#}";
|
=> $"{IdCategory}\t{DateStart:G}\t{DateEnd:G}\t{DurationMinutes:#0.#}\t{DepthStart:#0.#}\t{DepthEnd:#0.#}";
|
||||||
|
@ -5,7 +5,6 @@ using System.ComponentModel.DataAnnotations.Schema;
|
|||||||
|
|
||||||
namespace AsbCloudDb.Model
|
namespace AsbCloudDb.Model
|
||||||
{
|
{
|
||||||
#nullable disable
|
|
||||||
[Table("t_drilling_program_part"), Comment("части программ бурения")]
|
[Table("t_drilling_program_part"), Comment("части программ бурения")]
|
||||||
public class DrillingProgramPart
|
public class DrillingProgramPart
|
||||||
{
|
{
|
||||||
@ -20,12 +19,12 @@ namespace AsbCloudDb.Model
|
|||||||
public int IdFileCategory { get; set; }
|
public int IdFileCategory { get; set; }
|
||||||
|
|
||||||
[ForeignKey(nameof(IdWell))]
|
[ForeignKey(nameof(IdWell))]
|
||||||
public Well Well { get; set; }
|
public Well Well { get; set; } = null!;
|
||||||
|
|
||||||
[ForeignKey(nameof(IdFileCategory))]
|
[ForeignKey(nameof(IdFileCategory))]
|
||||||
public FileCategory FileCategory { get; set; }
|
public FileCategory FileCategory { get; set; } = null!;
|
||||||
|
|
||||||
[InverseProperty(nameof(RelationUserDrillingProgramPart.DrillingProgramPart))]
|
[InverseProperty(nameof(RelationUserDrillingProgramPart.DrillingProgramPart))]
|
||||||
public virtual ICollection<RelationUserDrillingProgramPart> RelatedUsers { get; set; }
|
public virtual ICollection<RelationUserDrillingProgramPart> RelatedUsers { get; set; } = null!;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@ using System.ComponentModel.DataAnnotations.Schema;
|
|||||||
|
|
||||||
namespace AsbCloudDb.Model
|
namespace AsbCloudDb.Model
|
||||||
{
|
{
|
||||||
#nullable disable
|
|
||||||
[Table("t_file_category"), Comment("Категории файлов")]
|
[Table("t_file_category"), Comment("Категории файлов")]
|
||||||
public class FileCategory : IId
|
public class FileCategory : IId
|
||||||
{
|
{
|
||||||
@ -13,9 +12,9 @@ namespace AsbCloudDb.Model
|
|||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
||||||
[Column("name"), Comment("Название категории")]
|
[Column("name"), Comment("Название категории")]
|
||||||
public string Name { get; set; }
|
public string Name { get; set; } = null!;
|
||||||
|
|
||||||
[Column("short_name"), Comment("Короткое название категории")]
|
[Column("short_name"), Comment("Короткое название категории")]
|
||||||
public string ShortName { get; set; }
|
public string? ShortName { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -7,7 +7,6 @@ using System.Text.Json.Serialization;
|
|||||||
|
|
||||||
namespace AsbCloudDb.Model
|
namespace AsbCloudDb.Model
|
||||||
{
|
{
|
||||||
#nullable disable
|
|
||||||
[Table("t_file_info"), Comment("Файлы всех категорий")]
|
[Table("t_file_info"), Comment("Файлы всех категорий")]
|
||||||
public class FileInfo : IId, IWellRelated
|
public class FileInfo : IId, IWellRelated
|
||||||
{
|
{
|
||||||
@ -25,7 +24,7 @@ namespace AsbCloudDb.Model
|
|||||||
public int IdCategory { get; set; }
|
public int IdCategory { get; set; }
|
||||||
|
|
||||||
[Column("name"), Comment("Название файла")]
|
[Column("name"), Comment("Название файла")]
|
||||||
public string Name { get; set; }
|
public string Name { get; set; } = null!;
|
||||||
|
|
||||||
[Column("date", TypeName = "timestamp with time zone")]
|
[Column("date", TypeName = "timestamp with time zone")]
|
||||||
public DateTimeOffset UploadDate { get; set; }
|
public DateTimeOffset UploadDate { get; set; }
|
||||||
@ -38,17 +37,17 @@ namespace AsbCloudDb.Model
|
|||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
[ForeignKey(nameof(IdWell))]
|
[ForeignKey(nameof(IdWell))]
|
||||||
public virtual Well Well { get; set; }
|
public virtual Well Well { get; set; } = null!;
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
[ForeignKey(nameof(IdAuthor))]
|
[ForeignKey(nameof(IdAuthor))]
|
||||||
public virtual User Author { get; set; }
|
public virtual User? Author { get; set; }
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
[ForeignKey(nameof(IdCategory))]
|
[ForeignKey(nameof(IdCategory))]
|
||||||
public virtual FileCategory FileCategory { get; set; }
|
public virtual FileCategory FileCategory { get; set; } = null!;
|
||||||
|
|
||||||
[InverseProperty(nameof(FileMark.FileInfo))]
|
[InverseProperty(nameof(FileMark.FileInfo))]
|
||||||
public virtual ICollection<FileMark> FileMarks { get; set; }
|
public virtual ICollection<FileMark> FileMarks { get; set; } = null!;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -6,7 +6,6 @@ using System.Text.Json.Serialization;
|
|||||||
|
|
||||||
namespace AsbCloudDb.Model
|
namespace AsbCloudDb.Model
|
||||||
{
|
{
|
||||||
#nullable disable
|
|
||||||
[Table("t_file_mark"), Comment("Действия с файлами.")]
|
[Table("t_file_mark"), Comment("Действия с файлами.")]
|
||||||
public class FileMark
|
public class FileMark
|
||||||
{
|
{
|
||||||
@ -28,17 +27,17 @@ namespace AsbCloudDb.Model
|
|||||||
|
|
||||||
[Column("comment"), Comment("Комментарий")]
|
[Column("comment"), Comment("Комментарий")]
|
||||||
[StringLength(255)]
|
[StringLength(255)]
|
||||||
public string Comment { get; set; }
|
public string? Comment { get; set; }
|
||||||
|
|
||||||
[Column("is_deleted"), Comment("Помечен ли файл как удаленный")]
|
[Column("is_deleted"), Comment("Помечен ли файл как удаленный")]
|
||||||
public bool IsDeleted { get; set; }
|
public bool IsDeleted { get; set; }
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
[ForeignKey(nameof(IdUser))]
|
[ForeignKey(nameof(IdUser))]
|
||||||
public virtual User User { get; set; }
|
public virtual User User { get; set; } = null!;
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
[ForeignKey(nameof(IdFile))]
|
[ForeignKey(nameof(IdFile))]
|
||||||
public virtual FileInfo FileInfo { get; set; }
|
public virtual FileInfo FileInfo { get; set; } = null!;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,12 +0,0 @@
|
|||||||
using System;
|
|
||||||
|
|
||||||
namespace AsbCloudDb.Model
|
|
||||||
{
|
|
||||||
#nullable disable
|
|
||||||
public class FilePublishInfo
|
|
||||||
{
|
|
||||||
public int IdPublisher { get; set; }
|
|
||||||
public DateTimeOffset Date { get; set; }
|
|
||||||
public string WebStorageFileUrl { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
@ -110,7 +110,7 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
Wells = gCluster.Select(well =>
|
Wells = gCluster.Select(well =>
|
||||||
{
|
{
|
||||||
var dto = well.Adapt<WellDto>();
|
var dto = well.Adapt<WellDto>();
|
||||||
dto.WellType = well.WellType?.Caption;
|
dto.WellType = well.WellType.Caption;
|
||||||
dto.LastTelemetryDate = wellService.GetLastTelemetryDate(well.Id).DateTime;
|
dto.LastTelemetryDate = wellService.GetLastTelemetryDate(well.Id).DateTime;
|
||||||
dto.Cluster = gCluster.Key.Caption;
|
dto.Cluster = gCluster.Key.Caption;
|
||||||
dto.Deposit = gDeposit.Key.Caption;
|
dto.Deposit = gDeposit.Key.Caption;
|
||||||
|
@ -24,7 +24,7 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
this.db = db;
|
this.db = db;
|
||||||
this.dbSetConfigured = db.Files
|
this.dbSetConfigured = db.Files
|
||||||
.Include(f => f.Author)
|
.Include(f => f.Author)
|
||||||
.ThenInclude(u => u.Company)
|
.ThenInclude(u => u!.Company)
|
||||||
.ThenInclude(c => c.CompanyType)
|
.ThenInclude(c => c.CompanyType)
|
||||||
.Include(f => f.FileMarks)
|
.Include(f => f.FileMarks)
|
||||||
.ThenInclude(m => m.User)
|
.ThenInclude(m => m.User)
|
||||||
@ -46,7 +46,7 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
query = query.Where(x => x.IsDeleted == request.IsDeleted);
|
query = query.Where(x => x.IsDeleted == request.IsDeleted);
|
||||||
|
|
||||||
if (request.CompanyNamePart is not null)
|
if (request.CompanyNamePart is not null)
|
||||||
query = query.Where(e => e.Author.Company.Caption.ToLower().Contains(request.CompanyNamePart.ToLower()));
|
query = query.Where(e => e.Author != null && e.Author.Company.Caption.ToLower().Contains(request.CompanyNamePart.ToLower()));
|
||||||
|
|
||||||
if (request.FileNamePart is not null)
|
if (request.FileNamePart is not null)
|
||||||
query = query.Where(e => e.Name.ToLower().Contains(request.FileNamePart.ToLower()));
|
query = query.Where(e => e.Name.ToLower().Contains(request.FileNamePart.ToLower()));
|
||||||
@ -186,7 +186,7 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
newFileMark.Id = default;
|
newFileMark.Id = default;
|
||||||
newFileMark.DateCreated = DateTime.UtcNow;
|
newFileMark.DateCreated = DateTime.UtcNow;
|
||||||
newFileMark.IdUser = idUser;
|
newFileMark.IdUser = idUser;
|
||||||
newFileMark.User = null;
|
newFileMark.User = null!;
|
||||||
|
|
||||||
db.FileMarks.Add(newFileMark);
|
db.FileMarks.Add(newFileMark);
|
||||||
return await db.SaveChangesAsync(token);
|
return await db.SaveChangesAsync(token);
|
||||||
|
@ -173,7 +173,7 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram
|
|||||||
public async Task<int> AddFile(int idWell, int idFileCategory, int idUser, string fileFullName, Stream fileStream, CancellationToken token = default)
|
public async Task<int> AddFile(int idWell, int idFileCategory, int idUser, string fileFullName, Stream fileStream, CancellationToken token = default)
|
||||||
{
|
{
|
||||||
if (!IsFileExtensionValid(fileFullName))
|
if (!IsFileExtensionValid(fileFullName))
|
||||||
throw new FileFormatException($"Файл {fileFullName} - неподдерживаемого формата. Файл не может быть загружен.");
|
throw new FileFormatException($"Файл {fileFullName} - не поддерживаемого формата. Файл не может быть загружен.");
|
||||||
|
|
||||||
var part = await context.DrillingProgramParts
|
var part = await context.DrillingProgramParts
|
||||||
.Include(p => p.RelatedUsers)
|
.Include(p => p.RelatedUsers)
|
||||||
@ -318,7 +318,7 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram
|
|||||||
fileMarkDto.User = user.Adapt<UserDto>();
|
fileMarkDto.User = user.Adapt<UserDto>();
|
||||||
|
|
||||||
var oldMarksIds = fileInfo.FileMarks
|
var oldMarksIds = fileInfo.FileMarks
|
||||||
?.Where(m => m.User.Id == idUser)
|
.Where(m => m.User?.Id == idUser)
|
||||||
.Select(m => m.Id);
|
.Select(m => m.Id);
|
||||||
|
|
||||||
if (oldMarksIds?.Any() == true)
|
if (oldMarksIds?.Any() == true)
|
||||||
@ -339,7 +339,7 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram
|
|||||||
.Where(u => u.IdUserRole == idUserRoleApprover);
|
.Where(u => u.IdUserRole == idUserRoleApprover);
|
||||||
if (approvers
|
if (approvers
|
||||||
.All(user => fileInfo.FileMarks
|
.All(user => fileInfo.FileMarks
|
||||||
?.Any(mark => (mark.IdMarkType == idMarkTypeApprove && mark.User.Id == user.IdUser && !mark.IsDeleted)) == true ||
|
?.Any(mark => (mark.IdMarkType == idMarkTypeApprove && mark.User?.Id == user.IdUser && !mark.IsDeleted)) == true ||
|
||||||
(fileMarkDto.IdMarkType == idMarkTypeApprove && user.IdUser == idUser)))
|
(fileMarkDto.IdMarkType == idMarkTypeApprove && user.IdUser == idUser)))
|
||||||
{
|
{
|
||||||
await NotifyPublisherOnFullAccepAsync(fileMarkDto, token);
|
await NotifyPublisherOnFullAccepAsync(fileMarkDto, token);
|
||||||
@ -369,7 +369,7 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram
|
|||||||
{
|
{
|
||||||
var file = await fileService.GetOrDefaultAsync(fileMark.IdFile, token);
|
var file = await fileService.GetOrDefaultAsync(fileMark.IdFile, token);
|
||||||
var well = await wellService.GetOrDefaultAsync(file!.IdWell, token);
|
var well = await wellService.GetOrDefaultAsync(file!.IdWell, token);
|
||||||
var user = file.Author;
|
var user = file.Author!;
|
||||||
var factory = new DrillingMailBodyFactory(configuration);
|
var factory = new DrillingMailBodyFactory(configuration);
|
||||||
var subject = factory.MakeSubject(well, "Загруженный вами документ полностью согласован");
|
var subject = factory.MakeSubject(well, "Загруженный вами документ полностью согласован");
|
||||||
var body = factory.MakeMailBodyForPublisherOnFullAccept(well, user.Name, file.Id, file.Name);
|
var body = factory.MakeMailBodyForPublisherOnFullAccept(well, user.Name, file.Id, file.Name);
|
||||||
@ -381,7 +381,7 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram
|
|||||||
{
|
{
|
||||||
var file = await fileService.GetOrDefaultAsync(fileMark.IdFile, token);
|
var file = await fileService.GetOrDefaultAsync(fileMark.IdFile, token);
|
||||||
var well = await wellService.GetOrDefaultAsync(file!.IdWell, token);
|
var well = await wellService.GetOrDefaultAsync(file!.IdWell, token);
|
||||||
var user = file.Author;
|
var user = file.Author!;
|
||||||
var factory = new DrillingMailBodyFactory(configuration);
|
var factory = new DrillingMailBodyFactory(configuration);
|
||||||
var subject = factory.MakeSubject(well, "Загруженный вами документ отклонен");
|
var subject = factory.MakeSubject(well, "Загруженный вами документ отклонен");
|
||||||
var body = factory.MakeMailBodyForPublisherOnReject(well, user.Name, file.Id, file.Name, fileMark);
|
var body = factory.MakeMailBodyForPublisherOnReject(well, user.Name, file.Id, file.Name, fileMark);
|
||||||
@ -440,8 +440,8 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram
|
|||||||
part.File = new FileInfoDto
|
part.File = new FileInfoDto
|
||||||
{
|
{
|
||||||
Id = fileEntity.Id,
|
Id = fileEntity.Id,
|
||||||
Author = fileEntity.Author.Adapt<UserDto>(),
|
Author = fileEntity.Author?.Adapt<UserDto>(),
|
||||||
IdAuthor = fileEntity.Author.Id,
|
IdAuthor = fileEntity.Author?.Id,
|
||||||
IdCategory = fileEntity.IdCategory,
|
IdCategory = fileEntity.IdCategory,
|
||||||
IdWell = fileEntity.IdWell,
|
IdWell = fileEntity.IdWell,
|
||||||
Name = fileEntity.Name,
|
Name = fileEntity.Name,
|
||||||
@ -488,7 +488,7 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram
|
|||||||
{
|
{
|
||||||
var context = serviceProvider.GetRequiredService<IAsbCloudDbContext>();
|
var context = serviceProvider.GetRequiredService<IAsbCloudDbContext>();
|
||||||
var fileService = serviceProvider.GetRequiredService<FileService>();
|
var fileService = serviceProvider.GetRequiredService<FileService>();
|
||||||
var files = state.Parts.Select(p => fileService.GetUrl(p.File));
|
var files = state.Parts.Select(p => fileService.GetUrl(p.File!));
|
||||||
await ConvertToPdf.GetConverteAndMergedFileAsync(files, tempResultFilePath, convertedFilesDir, token);
|
await ConvertToPdf.GetConverteAndMergedFileAsync(files, tempResultFilePath, convertedFilesDir, token);
|
||||||
await fileService.MoveAsync(idWell, null, idFileCategoryDrillingProgram, resultFileName, tempResultFilePath, token);
|
await fileService.MoveAsync(idWell, null, idFileCategoryDrillingProgram, resultFileName, tempResultFilePath, token);
|
||||||
};
|
};
|
||||||
|
@ -21,7 +21,7 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram
|
|||||||
totalDate = fileMarks.Max(f => f.DateCreated);
|
totalDate = fileMarks.Max(f => f.DateCreated);
|
||||||
acceptDirectionDirector = fileMarks
|
acceptDirectionDirector = fileMarks
|
||||||
.OrderByDescending(f => f.DateCreated)
|
.OrderByDescending(f => f.DateCreated)
|
||||||
.FirstOrDefault(f => f.User.Position == directionDirectorPositionName);
|
.FirstOrDefault(f => f.User?.Position == directionDirectorPositionName);
|
||||||
acceptsOthers = fileMarks
|
acceptsOthers = fileMarks
|
||||||
.Where(f => f.Id != acceptDirectionDirector?.Id)
|
.Where(f => f.Id != acceptDirectionDirector?.Id)
|
||||||
.OrderBy(f => f.DateCreated)
|
.OrderBy(f => f.DateCreated)
|
||||||
@ -60,7 +60,7 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram
|
|||||||
|
|
||||||
private void DrawTopRightSign(IXLWorksheet sheet)
|
private void DrawTopRightSign(IXLWorksheet sheet)
|
||||||
{
|
{
|
||||||
if (acceptDirectionDirector is null)
|
if (acceptDirectionDirector?.User is null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var user = acceptDirectionDirector.User;
|
var user = acceptDirectionDirector.User;
|
||||||
@ -72,7 +72,7 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram
|
|||||||
.SetValue(user.Position);
|
.SetValue(user.Position);
|
||||||
|
|
||||||
sheet.Cell(3, 5)
|
sheet.Cell(3, 5)
|
||||||
.SetValue(user.Company?.Caption);
|
.SetValue(user.Company.Caption);
|
||||||
|
|
||||||
sheet.Cell(4, 5)
|
sheet.Cell(4, 5)
|
||||||
.SetValue($"{user.Surname} {user.Name} {user.Patronymic}");
|
.SetValue($"{user.Surname} {user.Name} {user.Patronymic}");
|
||||||
@ -120,11 +120,15 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram
|
|||||||
.SetValue("Утверждаю:");
|
.SetValue("Утверждаю:");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DrawAccept(IXLWorksheet sheet, FileMarkDto mark, (int row, int col) startAddress)
|
private static void DrawAccept(IXLWorksheet sheet, FileMarkDto mark, (int row, int col) startAddress)
|
||||||
{
|
{
|
||||||
|
var user = mark.User;
|
||||||
|
if(user is null)
|
||||||
|
return;
|
||||||
|
|
||||||
int startRow = startAddress.row;
|
int startRow = startAddress.row;
|
||||||
int startCol = startAddress.col;
|
int startCol = startAddress.col;
|
||||||
var user = mark.User;
|
|
||||||
sheet.Cell(startRow, startCol)
|
sheet.Cell(startRow, startCol)
|
||||||
.SetValue("Должность");
|
.SetValue("Должность");
|
||||||
|
|
||||||
@ -137,7 +141,7 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram
|
|||||||
|
|
||||||
sheet.Range(startRow + 2, startCol + 1, startRow + 3, startCol + 1)
|
sheet.Range(startRow + 2, startCol + 1, startRow + 3, startCol + 1)
|
||||||
.Merge()
|
.Merge()
|
||||||
.SetValue(user.Company?.Caption);
|
.SetValue(user.Company.Caption);
|
||||||
|
|
||||||
sheet.Range(startRow + 4, startCol, startRow + 4, startCol + 1)
|
sheet.Range(startRow + 4, startCol, startRow + 4, startCol + 1)
|
||||||
.Merge()
|
.Merge()
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
using AsbCloudApp.Data;
|
|
||||||
using AsbCloudApp.Services;
|
|
||||||
using Microsoft.AspNetCore.Authorization;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
|
|
||||||
namespace AsbCloudWebApi.Controllers
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Категорий документов файлов
|
|
||||||
/// </summary>
|
|
||||||
[Route("api/[Controller]")]
|
|
||||||
[ApiController]
|
|
||||||
[Authorize]
|
|
||||||
public class FileCategoryController : CrudController<FileCategoryDto, ICrudRepository<FileCategoryDto>>
|
|
||||||
{
|
|
||||||
public FileCategoryController(ICrudRepository<FileCategoryDto> service, IFileCategoryService fileCategoryService)
|
|
||||||
: base(service)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user