Skip to content

Commit c5cfd9e

Browse files
committed
factories && managers were implemented
1 parent 6c48184 commit c5cfd9e

File tree

6 files changed

+30
-138
lines changed

6 files changed

+30
-138
lines changed

WeatherControl/Wissance.WeatherControl/Factory/MeasureUnitFactory.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System;
12
using Wissance.WeatherControl.Data.Entity;
23
using Wissance.WeatherControl.Dto;
34

@@ -26,5 +27,12 @@ public static MeasureUnitDto Create(MeasureUnitEntity entity)
2627
Abbreviation = entity.Abbreviation
2728
};
2829
}
30+
31+
public static void Update(MeasureUnitDto data, Guid id, MeasureUnitEntity entity)
32+
{
33+
entity.Name = data.Name;
34+
entity.Description = data.Description;
35+
entity.Abbreviation = data.Abbreviation;
36+
}
2937
}
3038
}

WeatherControl/Wissance.WeatherControl/Factory/MeasurementFactory.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,11 @@ public static MeasurementEntity Create(MeasurementDto dto)
2323
SensorId = dto.SensorId.HasValue ? dto.SensorId.Value : Guid.Empty
2424
};
2525
}
26+
27+
public static void Update(MeasurementDto data, Guid id, MeasurementEntity entity)
28+
{
29+
entity.Value = data.Value;
30+
entity.SampleDate = data.SampleDate;
31+
}
2632
}
2733
}

WeatherControl/Wissance.WeatherControl/Factory/SensorFactory.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System;
12
using Wissance.WeatherControl.Data.Entity;
23
using Wissance.WeatherControl.Dto;
34

@@ -61,5 +62,15 @@ public static SensorMinDataDto CreateMin(SensorEntity entity)
6162
MeasureUnitId = entity.MeasureUnitId
6263
};
6364
}
65+
66+
public static void Update(SensorDto data, Guid id, SensorEntity entity)
67+
{
68+
entity.Name = data.Name;
69+
entity.Description = data.Description;
70+
entity.Latitude = data.Latitude;
71+
entity.Longitude = data.Longitude;
72+
entity.StationId = data.StationId;
73+
entity.MeasureUnitId = data.MeasureUnitId;
74+
}
6475
}
6576
}

WeatherControl/Wissance.WeatherControl/Managers/MeasureUnitManager.cs

Lines changed: 1 addition & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -17,42 +17,8 @@ public class MeasureUnitManager : EfModelManager<MeasureUnitDto, MeasureUnitEnti
1717
{
1818
public MeasureUnitManager(ModelContext modelContext, ILoggerFactory loggerFactory)
1919
: base(modelContext, null, MeasureUnitFactory.Create, MeasureUnitFactory.Create,
20-
null, loggerFactory)
20+
MeasureUnitFactory.Update, loggerFactory)
2121
{
22-
_modelContext = modelContext;
2322
}
24-
25-
public override async Task<OperationResultDto<MeasureUnitDto>> UpdateAsync(Guid id, MeasureUnitDto data)
26-
{
27-
try
28-
{
29-
MeasureUnitEntity existingMeasureUnit = await _modelContext.MeasureUnits.FirstOrDefaultAsync(m => m.Id == id);
30-
if (existingMeasureUnit == null)
31-
{
32-
return new OperationResultDto<MeasureUnitDto>(false, (int) HttpStatusCode.NotFound,
33-
$"An error occurred during \"MeasureUnit\" update, an object with id:\":{id}\" does n't exist", null);
34-
}
35-
36-
existingMeasureUnit.Name = data.Name;
37-
existingMeasureUnit.Description = data.Description;
38-
existingMeasureUnit.Abbreviation = data.Abbreviation;
39-
40-
int result = await _modelContext.SaveChangesAsync();
41-
if (result >= 0)
42-
{
43-
return new OperationResultDto<MeasureUnitDto>(true, (int) HttpStatusCode.OK, string.Empty,
44-
MeasureUnitFactory.Create(existingMeasureUnit));
45-
}
46-
return new OperationResultDto<MeasureUnitDto>(false, (int) HttpStatusCode.InternalServerError,
47-
"An unknown error occurred during \"MeasureUnit\" update", null);
48-
}
49-
catch (Exception e)
50-
{
51-
return new OperationResultDto<MeasureUnitDto>(false, (int) HttpStatusCode.InternalServerError,
52-
$"An error occurred during \"MeasureUnit\" update: {e.Message}", null);
53-
}
54-
}
55-
56-
private readonly ModelContext _modelContext;
5723
}
5824
}

WeatherControl/Wissance.WeatherControl/Managers/MeasurementManager.cs

Lines changed: 2 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -15,77 +15,12 @@
1515

1616
namespace Wissance.WeatherControl.WebApi.Managers
1717
{
18-
public class MeasurementManager : EfModelManager<MeasurementDto, MeasurementEntity, Guid>
18+
public class MeasurementManager : EfModelManager<MeasurementDto, MeasurementEntity, Guid>
1919
{
2020
public MeasurementManager(ModelContext modelContext, ILoggerFactory loggerFactory)
2121
: base(modelContext, MeasurementsFilter.Filter, MeasurementFactory.Create,
22-
MeasurementFactory.Create, null, loggerFactory)
22+
MeasurementFactory.Create, MeasurementFactory.Update, loggerFactory)
2323
{
24-
_modelContext = modelContext;
2524
}
26-
27-
public override async Task<OperationResultDto<MeasurementDto>> UpdateAsync(Guid id, MeasurementDto data)
28-
{
29-
try
30-
{
31-
MeasurementEntity entity = MeasurementFactory.Create(data);
32-
MeasurementEntity existingEntity = await _modelContext.Measurements.FirstOrDefaultAsync(m => m.Id == id);
33-
if (existingEntity == null)
34-
{
35-
return new OperationResultDto<MeasurementDto>(false, (int)HttpStatusCode.NotFound, $"Measurements with id: {id} does not exists", null);
36-
}
37-
existingEntity.Value = entity.Value;
38-
existingEntity.SampleDate = entity.SampleDate;
39-
if (existingEntity.SensorId != entity.SensorId)
40-
{
41-
existingEntity.SensorId = entity.SensorId;
42-
}
43-
44-
int result = await _modelContext.SaveChangesAsync();
45-
if (result >= 0)
46-
{
47-
return new OperationResultDto<MeasurementDto>(true, (int)HttpStatusCode.OK, null, MeasurementFactory.Create(existingEntity));
48-
}
49-
return new OperationResultDto<MeasurementDto>(false, (int)HttpStatusCode.InternalServerError, $"An unknown error occurred during measurements update", null);
50-
}
51-
catch (Exception e)
52-
{
53-
return new OperationResultDto<MeasurementDto>(false, (int)HttpStatusCode.InternalServerError,
54-
$"An error occurred during \"Measurement\" update: {e.Message}", null);
55-
}
56-
}
57-
58-
public override async Task<OperationResultDto<MeasurementDto[]>> BulkUpdateAsync(MeasurementDto[] data)
59-
{
60-
try
61-
{
62-
IList<MeasurementEntity> measurementsToUpdate = await _modelContext.Measurements.Where(m => data.Any(di => di.Id == m.Id))
63-
.ToListAsync();
64-
foreach (MeasurementEntity measurement in measurementsToUpdate)
65-
{
66-
MeasurementDto dto = data.First(m => m.Id == measurement.Id);
67-
measurement.Value = dto.Value;
68-
measurement.SampleDate = dto.SampleDate;
69-
if (dto.SensorId.HasValue && measurement.SensorId != dto.SensorId)
70-
{
71-
measurement.SensorId = dto.SensorId.Value;
72-
}
73-
}
74-
int result = await _modelContext.SaveChangesAsync();
75-
if (result >= 0)
76-
{
77-
return new OperationResultDto<MeasurementDto[]>(true, (int)HttpStatusCode.OK, null,
78-
measurementsToUpdate.Select(m => MeasurementFactory.Create(m)).ToArray());
79-
}
80-
return new OperationResultDto<MeasurementDto[]>(false, (int)HttpStatusCode.InternalServerError, "An unknown error occurred during measurements update", null);
81-
}
82-
catch (Exception e)
83-
{
84-
return new OperationResultDto<MeasurementDto[]>(false, (int)HttpStatusCode.InternalServerError,
85-
$"An error occurred during \"Measurement\" bulk update: {e.Message}", null);
86-
}
87-
}
88-
89-
private readonly ModelContext _modelContext;
9025
}
9126
}

WeatherControl/Wissance.WeatherControl/Managers/SensorManager.cs

Lines changed: 2 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -18,43 +18,9 @@ public class SensorManager: EfModelManager<SensorDto, SensorEntity, Guid>
1818
{
1919
public SensorManager(ModelContext modelContext, ILoggerFactory loggerFactory)
2020
: base(modelContext, SensorFilter.Filter, SensorFactory.Create, SensorFactory.Create,
21-
null, loggerFactory)
21+
SensorFactory.Update, loggerFactory)
2222
{
23-
_modelContext = modelContext;
23+
2424
}
25-
26-
public override async Task<OperationResultDto<SensorDto>> UpdateAsync(Guid id, SensorDto data)
27-
{
28-
try
29-
{
30-
SensorEntity existingSensor = await _modelContext.Sensors.FirstOrDefaultAsync(s => s.Id == id);
31-
if (existingSensor == null)
32-
{
33-
return new OperationResultDto<SensorDto>(false, (int) HttpStatusCode.NotFound,
34-
$"An error occurred during \"Sensor\" update, an object with id:\":{id}\" does n't exist", null);
35-
}
36-
37-
existingSensor.Name = data.Name;
38-
existingSensor.Description = data.Description;
39-
existingSensor.Latitude = data.Latitude;
40-
existingSensor.Longitude = data.Longitude;
41-
existingSensor.StationId = data.StationId;
42-
existingSensor.MeasureUnitId = data.MeasureUnitId;
43-
44-
int result = await _modelContext.SaveChangesAsync();
45-
if (result >= 0)
46-
{
47-
return new OperationResultDto<SensorDto>(true, (int)HttpStatusCode.OK, null, SensorFactory.Create(existingSensor));
48-
}
49-
return new OperationResultDto<SensorDto>(false, (int)HttpStatusCode.InternalServerError, "An unknown error occurred during \"Sensor\" update", null);
50-
}
51-
catch (Exception e)
52-
{
53-
return new OperationResultDto<SensorDto>(false, (int) HttpStatusCode.InternalServerError,
54-
$"An error occurred during \"Sensor\" update: {e.Message}", null);
55-
}
56-
}
57-
58-
private readonly ModelContext _modelContext;
5925
}
6026
}

0 commit comments

Comments
 (0)