forked from ddrilling/AsbCloudServer
Merge branch 'dev' into fix/daily_report
This commit is contained in:
commit
ed59cbbb62
@ -1,61 +1,60 @@
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data.User
|
||||
namespace AsbCloudApp.Data.User;
|
||||
|
||||
/// <summary>
|
||||
/// Контакт
|
||||
/// </summary>
|
||||
public class ContactDto : IId
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Контакт
|
||||
/// ключ типа компании
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(1, int.MaxValue)]
|
||||
public int IdCompanyType { get; set; }
|
||||
|
||||
public class ContactDto : IId
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public int Id { get; set; }
|
||||
/// <summary>
|
||||
/// ключ скважины
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(1,int.MaxValue)]
|
||||
public int IdWell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// ключ типа компании
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdCompanyType { get; set; }
|
||||
/// <summary>
|
||||
/// ФИО
|
||||
/// </summary>
|
||||
[Required]
|
||||
[StringLength(260, MinimumLength = 0, ErrorMessage = "Допустимая длина ФИО от 1 до 260 символов")]
|
||||
public string FullName { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// ключ скважины
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdWell { get; set; }
|
||||
/// <summary>
|
||||
/// Email
|
||||
/// </summary>
|
||||
[RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", ErrorMessage = "Некорректный email")]
|
||||
public string? Email { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// ФИО
|
||||
/// </summary>
|
||||
[Required]
|
||||
[StringLength(260, MinimumLength = 0, ErrorMessage = "Допустимая длина ФИО от 1 до 260 символов")]
|
||||
public string FullName { get; set; } = null!;
|
||||
/// <summary>
|
||||
/// Phone
|
||||
/// </summary>
|
||||
[RegularExpression(@"^(?:\+7|8)\s?(?:\(\d{3}\)|\d{3})\s?\d{3}-?\d{2}-?\d{2}$", ErrorMessage = "Некорректный номер телефона")]
|
||||
public string? Phone { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Email
|
||||
/// </summary>
|
||||
[RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", ErrorMessage = "Некорректный email")]
|
||||
public string? Email { get; set; }
|
||||
/// <summary>
|
||||
/// Должность
|
||||
/// </summary>
|
||||
[Required]
|
||||
[StringLength(260, MinimumLength = 1, ErrorMessage = "Допустимая длина должности от 1 до 260 символов")]
|
||||
public string Position { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Phone
|
||||
/// </summary>
|
||||
[RegularExpression(@"^(?:\+7|8)\s?(?:\(\d{3}\)|\d{3})\s?\d{3}-?\d{2}-?\d{2}$", ErrorMessage = "Некорректный номер телефона")]
|
||||
public string? Phone { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Должность
|
||||
/// </summary>
|
||||
[Required]
|
||||
[StringLength(260, MinimumLength = 1, ErrorMessage = "Допустимая длина должности от 1 до 260 символов")]
|
||||
public string Position { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Компания
|
||||
/// </summary>
|
||||
[Required]
|
||||
[StringLength(260, MinimumLength = 3, ErrorMessage = "Допустимая длина должности от 3 до 260 символов")]
|
||||
public string Company { get; set; } = null!;
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// Компания
|
||||
/// </summary>
|
||||
[Required]
|
||||
[StringLength(260, MinimumLength = 3, ErrorMessage = "Допустимая длина названия компании от 3 до 260 символов")]
|
||||
public string Company { get; set; } = null!;
|
||||
}
|
||||
|
@ -17,6 +17,7 @@ using AsbCloudApp.Services.WellOperationImport;
|
||||
using AsbCloudApp.Data.WellOperationImport.Options;
|
||||
using AsbCloudApp.Exceptions;
|
||||
using AsbCloudDb.Model;
|
||||
using AsbCloudInfrastructure;
|
||||
|
||||
namespace AsbCloudWebApi.Controllers
|
||||
{
|
||||
@ -267,7 +268,7 @@ namespace AsbCloudWebApi.Controllers
|
||||
if (!await CanUserEditWellOperationsAsync(idWell, cancellationToken))
|
||||
return Forbid();
|
||||
|
||||
if (deleteBeforeInsert && wellOperations.Any())
|
||||
if (deleteBeforeInsert)
|
||||
{
|
||||
var existingOperations = await operationRepository.GetAsync(new WellOperationRequest
|
||||
{
|
||||
@ -356,7 +357,6 @@ namespace AsbCloudWebApi.Controllers
|
||||
[HttpPost("import/fact/default/{deleteBeforeInsert:bool}")]
|
||||
[ProducesResponseType(typeof(IEnumerable<WellOperationDto>), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)]
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||||
[Permission]
|
||||
public Task<IActionResult> ImportFactDefaultExcelFileAsync(int idWell,
|
||||
[FromForm] IFormFileCollection files,
|
||||
@ -384,7 +384,6 @@ namespace AsbCloudWebApi.Controllers
|
||||
[HttpPost("import/plan/default")]
|
||||
[ProducesResponseType(typeof(IEnumerable<WellOperationDto>), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)]
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||||
[Permission]
|
||||
public Task<IActionResult> ImportPlanDefaultExcelFileAsync(int idWell,
|
||||
[FromForm] IFormFileCollection files,
|
||||
@ -411,7 +410,6 @@ namespace AsbCloudWebApi.Controllers
|
||||
[HttpPost("import/plan/gazpromKhantos")]
|
||||
[ProducesResponseType(typeof(IEnumerable<WellOperationDto>), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)]
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||||
[Permission]
|
||||
public Task<IActionResult> ImportPlanGazpromKhantosExcelFileAsync(int idWell,
|
||||
[FromForm] IFormFileCollection files,
|
||||
@ -533,14 +531,14 @@ namespace AsbCloudWebApi.Controllers
|
||||
var wellOperations = wellOperationImportService.Import(idWell, idUser.Value, options.IdType, sheet)
|
||||
.OrderBy(w => w.DateStart);
|
||||
|
||||
var dateStart = wellOperations.Min(w => w.DateStart);
|
||||
var dateStart = wellOperations.MinOrDefault(w => w.DateStart);
|
||||
|
||||
foreach (var wellOperation in wellOperations)
|
||||
wellOperation.Day = (wellOperation.DateStart - dateStart).TotalDays;
|
||||
|
||||
if (!wellOperations.Any())
|
||||
return NoContent();
|
||||
|
||||
{
|
||||
if (dateStart.HasValue)
|
||||
wellOperation.Day = (wellOperation.DateStart - dateStart.Value).TotalDays;
|
||||
}
|
||||
|
||||
//TODO: очень быстрый костыль
|
||||
if (deleteBeforeInsert is not null && options.IdType == WellOperation.IdOperationTypeFact)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user